我有一个客户端的应用程序运行Apache,今天醒来时发现它的平均负载为11.2 (!)。有许多httpd进程正在运行,所有这些进程显然已经运行了几个小时,并且占用了所有的CPU。
重新启动Apache之后,我的平均负载下降到0.4,这个问题似乎已经消失了。
现在,如果我的keepAlive超时为5,这些httpd进程如何运行这么长时间?我不知道怎么诊断他们在做什么,为什么。
它似乎在短期内修复了自己,但这是相当值得关注的,因为我不知道它什么时候会回来,哈哈。
发布于 2018-08-03 05:20:10
KeepAlive和KeepAliveTimeout确定服务器将保持空闲连接多久,以等待该连接上的客户端的另一个请求。进程没有理由在等待时使用CPU时间。
一个apache进程可以服务于多个连接,因此,高CPU时间本身并不表示这是在单个请求上使用的,尽管进程在所服务的请求数量确定之后才重新启动。
您可以在服务器日志中找到提示。
如果再次发生这种情况,请尝试找出流程正在做什么。在其中一个进程上使用strace,或在gdb中附加并使用"where“命令。
https://serverfault.com/questions/924737
复制相似问题