我运行一个体面的高stream量的web服务器(专用的Apache / PHP),虽然它大部分时间工作正常,大约每天一次它死锁,并拒绝任何新的连接。 重新启动Apache修复了这个问题。 在这个locking之前,我已经捕获了几次,Apache状态显示了每个请求的所有W(发送回复)。 http-errors.log中的最后一个错误是MaxClients被击中(这是有道理的,因为没有请求返回)。
你们有什么想法,为什么Apache的请求可能决定不再回来,或对这里可能发生的事情有任何想法?
谢谢!
看起来你有可怕的持续布什综合症(简称PBS)……这意味着你被太多的W(发送回复)卡住了。 幸运的是,这是一个非常简单的修复。 原因可能是您的脚本正在执行冗长的查询,从来没有完成。 看看这篇文章,它解释了如何修复诊断和跟踪连接的原因滞留在“发送回复”状态http://techmythsworld.blogspot.com/2011/11/solving-httpd-maxclients-and-modstatus.html
总之,你需要做下面的事情:1.find被阻塞在W中的脚本,以及任何被发送给它的脚本(这可能是非常独特的variables,导致它卡住。
确保您可以通过将引起的variables发布到脚本来重新创build情况。 你会看到一个连接显示从你的ipaddress将仍然坚持在W.
如果您有循环或数据库查询没有结束,请跟踪。
修复脚本。 并重新发布的variables,你应该看到卡在W为您的IP地址已经消失。
PS。 您必须重新启动Web服务器与每个testing重置您的连接(命令“service httpd restart”应该做
当PHP-FPM不能正常工作时,我也看到了这个问题。 网站被closures,进程保持“W”状态。 重新启动PHP-FPM解决了这个问题。