所以,在过去,我从来没有任何问题,这个应用程序。 所有的基准都有100%的成功率。 昨天我把nginx设置成服务器的静态内容,并把其他的请求传给apache。 现在,如果我有一个并发用户(-c 1),那么一切都很好。 但是,似乎我拥有的并发用户越多,获得的失败请求就越多。 不是很多,但也许大概有10或15个。他们是“长度”,无论如何。 用浏览器访问网站,我根本没有任何问题。 我怎样才能找出这些失败的请求的原因?
这是我的httpd.conf的一部分:
Timeout 20 KeepAlive Off MaxKeepAliveRequests 100 <IfModule prefork.c> StartServers 1 MinSpareServers 1 MaxSpareServers 3 ServerLimit 50 MaxClients 50 MaxRequestsPerChild 4000 </IfModule> <IfModule worker.c> StartServers 1 MaxClients 50 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
你还需要其他信息吗?
我的猜测是,当您对网站进行基准testing时,您遇到了MaxClients限制。
在对站点进行基准testing时,尝试查看端口80中build立了多less个连接:
netstat -tnap | grep ":80" | grep -c ESTA
在对网站进行基准testing的同时重复执行此命令几次。 可能你会达到50个build立的连接。
一个rrdtool趋势的应用程序(如Cacti,Munin或Ganglia)绘制TCP连接的数量也是很好的debugging这种问题,你可以看到历史。
希望这可以帮助!
这些“长度”失败仅仅意味着某些尝试的内容长度(由应用程序提供的数据量)与第一个请求的长度不匹配。 所以,如果ab第一次得到100个字节。 然后接下来9次收到150字节,则会报告9次长度失败。
如果您正在提供dynamic内容,则会出现这些错误,并且可以安全地忽略。
Marco Ramos的回答是不正确的,没有任何理由像运行netstat。
这里有一个更好的解释来自Stackoverflow的人:
负载testing与AB …假失败的请求(长度)