Apache2服务器停止响应

我正在寻找build议,我应该在哪里深入挖掘。

稍后,Apache2服务器在启动2-15小时后停止服务请求。 因此,我必须做的service apache2 restart每半天service apache2 restart

长版本:

  1. 我从专用服务器(Ubuntu 13.04)运行几个网站(2013年7月12日build立的Apache 2.2.22)。
  2. Apache2服务器运行半年以上,现在突然停止对所有网站(有大约5个站点)的请求,直到Apache进程重新启动。
  3. 在/ var / log / apache中,我找不到任何exception日志。
  4. service apache2 status报告进程正在运行

听到你的build议会很高兴,在我的情况下我该怎么做。

更新:

运行netstat -an | grep 80 netstat -an | grep 80

 tcp6 0 0 :::80 :::* LISTEN tcp6 325 0 SERV_IP:80 IP_A:35514 CLOSE_WAIT tcp6 332 0 SERV_IP:80 IP_B:34198 CLOSE_WAIT tcp6 379 0 SERV_IP:80 IP_C:57859 CLOSE_WAIT tcp6 0 0 SERV_IP:80 IP_A:35060 CLOSE_WAIT tcp6 360 0 SERV_IP:80 IP_A:38481 CLOSE_WAIT tcp6 466 0 SERV_IP:80 IP_B:56324 CLOSE_WAIT tcp6 361 0 SERV_IP:80 IP_A:53466 CLOSE_WAIT tcp6 1 0 SERV_IP:80 IP_A:38102 CLOSE_WAIT tcp6 196 0 SERV_IP:80 IP_E:58125 ESTABLISHED 

和更多这样的项目,其中约150人。

ps aux | grep apache ps aux | grep apache

 root 2968 0.0 0.0 452240 21116 ? Ss 16:08 0:01 /usr/sbin/apache2 -k start www-data 5217 0.0 0.0 463584 23820 ? S 17:04 0:03 /usr/sbin/apache2 -k start 

后面的行中有大约120个(www-data),所以我假设120个apache进程?

在apache2根进程上使用strafe

  sudo strace -f -p 2968 Process 2968 attached - interrupt to quit select(0, NULL, NULL, NULL, {0, 264394}) = 0 (Timeout) wait4(-1, 0x7fff6d157a6c, WNOHANG|WSTOPPED, NULL) = 0 select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout) wait4(-1, 0x7fff6d157a6c, WNOHANG|WSTOPPED, NULL) = 0 

使用其中一个www数据过程:

 sudo strace -f -p 8554 Process 8554 attached - interrupt to quit flock(40, LOCK_EX 

哇,它在我看来好像阿帕奇进程卡住,一旦最大连接限制超过,它停止创build新的实例。 但为什么他们卡住了?

htop,iotop,jnettop不报告任何exception。 (不超载)

UPDATE2:服务器在过去两天不再崩溃。 所以我无法得到更多的信息.​​.相反,我感谢您的帮助,并接受答案。 一旦有更多的信息可用,我会留下一个更好的结构体的新问题的链接。 谢谢

不pipe是什么“服务apache2状态”报告,当你做ps aux时,你看到apache进程吗?

当问题发生时,你可以做一个netstat -n吗? 也许你用尽了一个资源,例如文件描述符,你可能有太多的开放连接。

在这个问题你有很高的CPU利用率? 也许系统内存不足,是颠簸?

http服务器响应连接被拒绝或连接超时?

在后一种情况下,我会build议做strace -f -p [apachepid],你可能会发现哪个系统调用阻塞了请求。 在前者中,可能apache已经崩溃了。

你代理Tomcat或其他应用程序服务器,或者你提供普通的静态HTML?

你configuration了authentication? 例如,可能是身份validation层出了问题

更新:

在第二个strace中,我看到了这个群(40,LOCK_EX也许这些进程试图获得一个排它锁吗?你可以做lsof -n -p 8554(或任何pid尝试群集),看看它试图locking哪个文件(40是文件描述符),也可以是“ls / proc / 8554 / fd”