apache2 进程在一段时间后挂起

apache2 进程在一段时间后挂起

我们有一台专用服务器,配置如下: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

对于类似情况,我们无法找到原因或有效的补救措施。也许你们中的一些人知道如何找到原因或如何处理其后果。

答案1

尝试使用 strace 连接到进程

strace -p $PID_OF_SPINNING_WORKER

这应该生成一个工作程序正在调用的系统调用列表,可能在循环中查找文件或其他资源。

如果此操作未产生任何结果,则该过程可能正在循环中旋转,您可以使用 gdb 连接到工作器并找出执行的大致区域

gdb -p $PID_OF_SPINNING_WORKER
(gdb) bt 

答案2

首先要检查的是系统日志。以下日志中是否出现了任何异常:

/var/log/apache2/error.log
/var/log/apache2/access.log
/var/log/syslog

请注意,如果您使用虚拟主机,那么 Apache 2 日志文件可能位于不同的位置。

答案3

该服务器是否处于实时环境中?如果不是,通过查看 apache 日志(尤其是错误日志),您应该能够找出导致此问题的进程。值得要求 apache 将进程 ID 记录到日志中,这样当发生这种情况时,您就可以看到进程正在做什么。

相关内容