问题背景
小编最近在做压力测试的时候,开发同(ye)学(ye)提了一个需求:除了记录和统计服务器的性能数据外,需要把每条请求服务端的返回数据都抽取出来以便分析问题。小编第一次接到这个问题,有点懵逼,一番思考和分析之后终于有了点眉目,分享给大家。
服务端数据怎么查看
通常情况下,在做性能测试的时候,我们需要关注的点有这些:
服务端处理能力(并发量、qps、响应时间等);
服务端机器性能数据(程序内存占用、cpu占用、网络带宽占用等);
异常请求信息(如服务端返回500、502等异常状态码时对应的请求及原因)。
要查看服务端返回的数据,首先要清楚这个数据是怎么存储的。
在写完(或复制完,你懂的)LoadRunner脚本后,我们需要调试看该脚本能否正常运行。默认情况下回放一次会发一条请求,此时LoadRunner的输出信息中会显示:
提示我们没有显示服务端返回的消息,如果我们要改变的话需要设置一下。
在LoadRunner中,通过 Vuser -> Run-Time Settings (或快捷键F4)进入运行时设置页面,默认如下:
可以看到默认打印的是LR的标准log,只有当有异常时才会返回服务端的信息。所以我们需要改成一直都返回服务端信息并且勾选上服务端数据,如下:
然后保存,即可实现所有数据都记录下来,再次回放脚本,控制台输入的信息就变得丰富起来了,会记录网络请求的header、body等信息(大家忽略编码问题)。
服务端数据的保存
在回放时能看到服务端数据了,剩下就是找到这些数据在压测过程中被存在哪儿了。第一反应是压测的log,是的,这些数据都被完全记录在压测的log中方便LoadRunner自己去进行分析(做完性能测试后他自己会分析生成一个报表,数据就是从这儿来的)。
以Linux打压机为例,在LoadRunner中添加打压机的时候会让我们填一个临时目录,这个目录会用来保存压测过程中所有的数据信息:
压测执行过程中,我们按照上面说的将log形式选择为始终接收服务端返回的数据,随后开始压测。在Linux机器上指定的临时目录中会生成一个netdir的文件夹:
进入这个文件夹一层一层往下走,会发现这个文件夹最终的结构是这样:
它的路径映射到的是LoadRunner工作机上的Temp文件夹,在该文件夹下面会有一个log文件夹,里面是根据压测过程中的每个Vuser(并发)来记录的log数据,具体如下(小编在测试时设置了5个Vuser):
随便选择一个查看,结果如下:
可以看到这个log中完整地记录了一次请求从Start Action到End Action过程中的所有信息。
到这儿所有的问题就解决了,需要服务器返回的信息。我们只需要在这些log文件中根据服务器返回的特定标识去自动化提取相应的内容即可,由于各个业务数据均(xiao)不(bian)相(tai)同(lan),此处就不再展示如何提取数据了。
事实上,在LoadRunner上结束测试的时候,会弹出一个对话框说正在收集数据结果,这个过程其实就是把负载机器(打压机)上的这些数据文件给传到LoadRunner所在的本地目录下,然后以这些数据为基础产生最终的报表的。
以上就是关于LoadRunner记录服务端数据的一点儿问题,希望能给需要的小伙伴们带去帮助。另外如果大家有任何关于服务端测试的疑问和想法,非常欢迎大家在留言中交流互动哦。
领取专属 10元无门槛券
私享最新 技术干货