服务器数据啊,找你找得好辛苦

问题背景

小编最近在做压力测试的时候,开发同(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记录服务端数据的一点儿问题,希望能给需要的小伙伴们带去帮助。另外如果大家有任何关于服务端测试的疑问和想法,非常欢迎大家在留言中交流互动哦。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111B04M7R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券