KeepAlive 超时为 5,但 httpd 进程已运行数小时

KeepAlive 超时为 5,但 httpd 进程已运行数小时

我有一个客户的应用程序运行着 Apache,今天醒来发现它的平均负载为 11.2 (!)。有许多 httpd 进程正在运行,显然它们已经运行了好几个小时,占用了所有的 CPU。

重新启动 Apache 后,我的平均负载下降到 0.4,问题似乎已经消失。

现在,如果我的 keepAlive 超时是 5,这些 httpd 进程如何运行这么长时间?我真的不知道如何诊断它们在做什么,以及为什么。

它似乎在短期内已经自行修复,但这非常令人担忧,因为我不知道它什么时候会恢复,哈哈。

答案1

KeepAlive 和 KeepAliveTimeout 决定了服务器将保持空闲连接多长时间以等待该连接上来自客户端的另一个请求。进程没有理由在等待时占用 CPU 时间。

一个 Apache 进程可以处理许多连接,因此高 CPU 时间本身并不表示它用于单个请求,尽管进程在处理了规定数量的请求后会重新启动。

您可以在服务器日志中找到提示。

如果再次发生这种情况,请尝试找出进程正在做什么。对其中一个进程使用 strace,或使用 gdb 附加并使用“where”命令。

相关内容