当 Apache 的 httpd %mem 攀升至 20+ 并且 CPU 的 %wa 运行过高时,发生了什么?

当 Apache 的 httpd %mem 攀升至 20+ 并且 CPU 的 %wa 运行过高时,发生了什么?

我遇到了不熟悉的 Apache 症状,我很好奇这里是否有人知道如何诊断它们。我有一对运行 mod_python 和 Apache 的应用服务器,最近升级到 Django 1.2.3。它们插入运行 PostGIS 和 memcached 的数据库服务器。

以下是我在“顶部”看到的内容:

  • 应用服务器 httpd 进程攀升至 20 多。

  • 应用服务器 CPU 的 %wa 过去几乎总是接近于零,现在开始在 %50 左右徘徊。

我重启了 Apache,问题就消失了。到目前为止,这个问题只复发过一次,但我担心它可能会复发,而且我很好奇,想弄清楚到底是怎么回事。有人见过这种情况吗?知道处理它的明智方法吗?我打算如果再次出现这种情况,就仔细检查 io 操作,但对此没有很好的把握。

答案1

使用strace -T -f -p 11541154 是问题进程的进程 ID。然后使用 grep 和 sed/awk 以及 lsof 尝试找出哪些系统调用耗时较长。您可能会发现针对特定文件的 read() 或 write() 变体耗时较长。您应该先尝试使用 lsof 检查打开文件列表以获取文件描述符(例如 5),然后搜索read(5,并检查末尾的数字(例如<0.00056>)。这个数字越大,您就越需要调查文件所在的设备,这就是它lsof如此方便的原因。

顺便说一句,在某些系统上,我必须SIGCONT针对该进程及其子进程发出一个,因为 strace 发出了一个SIGSTOP。以 root 身份输入:cd /proc/1154/task; kill -CONT *; cd /

相关内容