诊断使用100%CPU的Apache进程
我有一个networking服务器设置,为一堆域提供基于虚拟主机的虚拟主机,并一直工作得很好。 服务器使用Apache运行Ubuntu。 PHP运行的是FastCGI而不是Apache模块。 自星期天早上以来,apache2进程偶尔会达到100%的CPU使用率,并坚持在那里,不再提供任何请求,直到它被重置。 简单的重新启动Apache解决了这个问题。 所有的网站都设置为使用FastCGI的PHP解释器,所以我怀疑的最糟糕的问题来源(错误的PHP脚本)应该导致php5-cgi封顶的CPU,而不是apache2,对不对? 有没有什么办法能够以某种方式询问apache2进程,看看现在在做什么? 简单的networking日志调查不会显示任何可疑的活动或缓慢的请求泛滥。 有点难倒 – 目前只是运行一个监视脚本,检查一个猖獗的apache2进程,并重新启动它,如果find。 更新: 这个过程今天早上再次盯住了100%,一个快速strace -f -p [pid]导致了下面的输出。 这6行重复与屏幕滚动一样快。 wait4(3437, 0x7fffaf867184, WNOHANG|WSTOPPED, NULL) = 0 wait4(5497, 0x7fffaf867184, WNOHANG|WSTOPPED, NULL) = 0 wait4(5504, 0x7fffaf867184, WNOHANG|WSTOPPED, NULL) = 0 wait4(3436, 0x7fffaf867184, WNOHANG|WSTOPPED, NULL) = 0 wait4(4035, 0x7fffaf867184, WNOHANG|WSTOPPED, NULL) = 0 wait4(3437, 0x7fffaf867184, WNOHANG|WSTOPPED, NULL) = 0