我如何知道 Apache 进程正在做什么?

我如何知道 Apache 进程正在做什么?

有时 apache 会发疯并占用我所有的内存和交换空间,但我不知道如何找出导致这种情况的 Web 应用程序。

ps 为我提供了该进程的输出;“不间断睡眠(通常是 IO)”

www-data  1526  0.1 78.9 14928852 3191628 ?    D    Oct17   6:45 /usr/sbin/apache2 -k start

我怀疑是 Ruby+Redmine,但我想确定一下

答案1

确保您已mod_status.so加载 apache 模块,然后查找/将上述内容添加到您的 httpd.conf:

# Uncomment the following lines to enable mod_status support:
#
ExtendedStatus On

<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from all
Allow from YOUR_IP_HERE
</Location>

这将允许您查看 http 服务器中正在使用的加载域的所有页面。

要访问它,请使用http://your_ip/服务器状态并且只有在定义的ipAllow from YOUR_IP_HERE才可以查看它。

答案2

lsof -p 将显示它正在等待的文件句柄。此外,strace -p 和 ltrace -p 可能很方便尝试调试它。

相关内容