在对一个站点做压力测试时

直接用PHP的echo 字符串一切正常,

然后想测试复杂一点,写了个排序算法,输出结果的PHP

发现无论 -n多大,-c多小,都会出现90%以上的Failed requests


惊呆了,不会服务器这么不经压吧

ab -n100 -c1  http://pai.xxx.com/testhhvm.php

也出现95个失败

Complete requests:      100

Failed requests:        95

  (Connect: 0, Receive: 0, Length: 95, Exceptions: 0)


浏览器和curl打开页面是正常的,狂刷也不会有问题


网上找资料才发现是网页传回的内容问题。其实也不是问题,是ab的判断失败方式中有一个是判断传回的内容是否跟第一次接收的一样大。


分析一下:

看上面的Failed request:有四个类别,分别是

Connect: 0,    #连接失败的次数

Receive: 0,    #接收数据失败的次数

Length: 95,    #接收到的数据长度不一致的次数

Exceptions: 0  #程序异常的次数


可以看到我们的失败都集中在Length,也就是接收的html长度不一致引起的,

我的排序算法中用了随机函数生成200 长度的数据,所以每次总长度是不一样的。



这种情况怎么解决,

可以修改代码,让每次生成的长度都是一样就行了

其他没有办法,只能忽略了