我正在运行 Apache,每隔一段时间 [似乎每隔一天一次] Apache 进程的数量就会大幅增加,每个进程都会占用大约 75% 的 CPU 使用率。
我很想追踪这些进程,找到接收请求的实际虚拟主机。有什么建议吗?
答案1
Apache 的日志记录功能很多漂亮的选择,为了弄清到底发生了什么,有几个不错的选择可以尝试。我会从记录 Apache 完成请求所用时间的%D
或开始%T
,假设占用所有 CPU 时间的事情也需要更多的“实际”时间来完成。
如果您使用的是 Prefork MPM,则可以将日志格式化为包含%P
。这将记录实际处理请求的 apache 进程的进程 ID,以便您可以将请求与输出相匹配top
。进程 ID 将很快被重复使用(由于每个子进程有多个请求),因此您仍然需要检查日志上的时间戳,但您应该能够找到 apache 进程当时正在处理的特定请求。
如果您正在使用 Worker,那么您可以尝试将其与在 PID 列中打印线程 ID%{tid}P
进行匹配。top -H