Apache2 很多 CLOSE_WAIT。LAMP。定位问题

Apache2 很多 CLOSE_WAIT。LAMP。定位问题

我正在运行 LAMP 设置,当我使用 netstat 时,似乎有许多 apache2 程序的 CLOSE_WAIT 连接(几百个)。这最终导致我的 apache 变得无响应。

以下是设置:

PHP的:

PHP 5.3.10-1ubuntu3.6 with Suhosin-Patch (cli) (built: Mar 11 2013 14:31:48) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

阿帕奇2:

Server version: Apache/2.2.22 (Ubuntu) [running mpm-prefork]

mysql

Server version: 5.5.29-0ubuntu0.12.04.2-log (Ubuntu)

跑步Ubuntu 12.04 LTS

Linux numerink201 3.2.0-34-virtual #53-Ubuntu SMP Thu Nov 15 11:08:40 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

我有一些问题:

  1. 我如何知道我处于流程的哪个阶段?显然,客户端发送了 FIN/RST 请求,但我如何知道是哪个?如果是 FIN,我如何知道该流程是否已发送自己的 FIN/ACK,或者我是否正在等待客户端 ACK。或者是否已收到所有内容但流程未能关闭?

  2. 如果是 apache 无法正确关闭进程,我该如何定位问题?

我目前已将 Apache 的超时时间从 300 秒减少到 150 秒,作为临时措施。有没有更好的方法?

提前致谢。

答案1

如果您提供内核版本并告诉我们您使用的是哪个 MPM,这可能会有所帮助。如果是工作(线程)服务器,则切换到 pre-fork(不是因为 Rasmus 在 2005 年说这是个坏主意 - Apache 中也存在问题)。

许多 CLOSE_WAIT 连接

为了哪个服务器?httpd?MySQL?其他的?

显然客户端发送了FIN请求

上次我详细研究这个问题时,发现 MSIE 和 Firefox 通常都使用 RST 而不是“干净”关闭来关闭连接。

您大概并不关心性能,因此禁用 keepalive 可能会有所帮助暂时缓解。

相关内容