Apache2进程陷入100%cpu,CLOSE_WAIT套接字缠绵

今天我已经排除了这个问题,我似乎无法find有关如何确定发生的事情的任何信息。

基本上,在我的开发服务器上,另一个开发人员正在导致CLOSE_WAIT连接,如果我不重新启动apache2,会连续几个小时吃掉一个或多个apache2进程。


从我读过的内容来看,这可能是也可能不是apache的问题,只是这就是CLOSE_WAIT的工作方式(服务器正在等待FIN数据包closures连接)。

我简直不敢相信服务器会因为没有收到来自远程主机的数据包而被告知closures连接而受到损害。 特别是没有任何干预一个多小时。

有小费吗? 我正要拉我的头发。


编辑:此外,在任何Apache日志文件中没有不寻常的条目。


编辑2: lsof -i每个挂起的进程只显示一个CLOSE_WAIT。 (这一直困扰着我,因为大多数其他讨论都谈到了很多CLOSE_WAIT连接,而每个进程只有一个。

正在运行的代码的性质(php)并不真正适用于closures打开的连接和什么。 我可以使用相同的会话数据运行相同的代码,而不会导致挂起的进程。

尝试设置mod-status,并在configuration(debian /etc/apache2/mods-enabled/status.conf)中设置您的IP在允许从,并设置

ExtendedStatus On 

然后访问您的服务器的默认主机网站,并追加/ server-status /到URL的末尾。 这应该给你更多关于服务器是什么的信息。

对不起,这不是一个真正的修复,但更多的方式来获得更多的信息! 我无法就你的问题发表评论。

请参阅运行lsof -i在CLOSE_WAIT中显示大量连接? 我应该担心和类似的讨论。 可能您的开发人员没有正确closures连接。 CLOSE_WAIT在正常情况下应该超时,有些东西正在阻止它。

您可以尝试回滚到没有此错误的应用程序版本,并查看两者之间的变化。