我正在运行Apache,每过一段时间(似乎每隔一天),apache进程的数量就会大幅度增加,每个CPU占用大约75%的CPU使用量。
我希望能够追踪到这些进程到实际的虚拟主机,获取请求。 有什么build议么?
Apache的日志logging有很多漂亮的选项 ,为了弄清楚发生了什么,有几个很好的select。 我会从%D或%T开始,它logging了Apache完成请求所花费的时间,假设无论占用所有CPU时间还需要更多的“真实”时间。
如果使用的是Prefork MPM,则可以格式化日志以包含%P 。 这将logging实际处理请求的apache进程的进程ID,以便将请求匹配到top输出。 进程ID会很快被重用(由于每个subprocess有多个请求),所以你仍然需要检查日志的时间戳,但是你应该能够find当时apache进程正在处理的具体请求。
如果您使用的是Worker,那么您可以尝试%{tid}P并将其匹配到top -H ,在HP列中输出线程ID。