我们有专门的服务器,configuration如下:AMD Athlon(TM)64 X2双核处理器5600+内存:4GB操作系统:Debian 4.0,内核:2.6.18-5-amd64 Apache / 2.2.3 PHP / 5.2.0 -8 MYSQL:5.0.32
服务器工作没有问题,当突然来自不明原因的httpd进程挂起,并消耗50%的CPU功率。 情况如下图所示:
http://img26.imageshack.us/img26/1615/image001.png
我们找不到原因或类似情况的有效补救措施。 也许你们中的一些人知道如何find原因或如何处理其后果。
尝试使用strace连接到进程
strace -p $PID_OF_SPINNING_WORKER
这应该产生一个工作人员正在调用的系统调用列表,可能在一个循环中查找一个文件或其他资源。
如果这不产生任何东西,那么这个过程可能在一个循环中旋转,你可以使用gdb连接到worker并找出一般的执行区域
gdb -p $PID_OF_SPINNING_WORKER (gdb) bt
首先要检查的是系统日志。 有什么奇怪的出现在:
/var/log/apache2/error.log /var/log/apache2/access.log /var/log/syslog
请注意,如果您使用虚拟主机,则Apache 2日志文件可能位于不同的位置。
这台服务器是在一个真实的环境中吗 如果没有,通过查看apache日志 – 尤其是错误日志,你应该能够找出造成这种情况的原因。 值得一提的是,要求apache将进程标识logging到日志中,以便在发生这种情况时可以看到进程正在执行的操作。