古人学问无遗力,少壮功夫老始成。 纸上得来终觉浅,绝知此事要躬行。

【原创】使用http_load测试动态页面的性能遇到的问题及解决办法

上一篇 / 下一篇  2009-09-24 10:35:10 / 个人分类:Linux常用命令

原创于cnerlang.blogspot.com 2009年1月15日,现将其迁移至此:

       最近接手一个项目的性能测试,需要使用http_load。(主要是需要给出该系统能支持的最大QPS)
       在测试过程中遇到了一个非常棘手的问题,就是页面内容是动态变化的——而http_load在处理时会去关注每次访问同一个URL返回结果(即字节数)是否一致,若不一致就会抛出Byte Count Wrong。但对于静态页面出现这个提示,说明系统不能承受如此大的压力(也可能是其他原因,在这里我只说这一点);但对于动态页面,通过这种进行判断就有失准确性了……
       通过自己观察,并与开发沟通发现页面的动态变化是有一定规律的——只是一少部分内容发生变化(换句话说,就是两次返回的字节数应该相差不是非常大)。如果能找到“两次”访问返回的字节数,并经过对比如果相差不大(开发认为是正常的),那可以说明返回的页面就是正常的(此时就可以忽略掉“byte count wrong”);如果相差很大(开发也认为是非正常的),那可以说明返回的页面有误)。
       如果能让http_load中记录的“日志”中体现出两次返回的字节数就好了……于是开始研究http_load.c(源码),终于找到了一个可以添加的入口,问题解决!以上的“如果”能实现了!
修改的代码如下:
【原来的】
“stderr, "%s: byte count wrong", urls[url_num].url_str );”
【修改的】
“stderr, "%s: byte count wrong: first=%d,cur=%d\n", urls[url_num].url_str,urls[url_num].bytes,connections[cnum].bytes );”

为什么修改成这样,应该就不用我多说了吧?

小小的总结一下:
在做一件事情的时候,如果用常规的方法无法办到,我们不妨“大胆”地假设一下,并小心地去“求证”,一定会能达到效果的!

TAG: Linux linux http_load byte cout wrong

 

评分:0

我来说两句

Open Toolbar