AWS上有一台稳定多年的服务器。 它在Ubuntu 12.04.5 LTS上运行Apache 2.2.22。 我经常在本月顶部运行安全更新。
最近,Apache在午夜左右停止了服务请求,有时在凌晨(中午2-4点)停止服务请求。 对我们来说这是一个低使用期,但我们仍然有一个稳定的请求stream。 我们的白天活动要高得多,白天也不会下降(至less到目前为止)。 到目前为止,它总是在大约10分钟左右到来,并在早上总是恢复正常。 由于问题的时间,我不怀疑它与其他几个线程build议的MaxClients。
我没有看到任何apache错误日志(我们有大约10个虚拟主机),也没有dmesg,也没有syslog。 实际上,我今天早上读了每个日志/ var / log。 在这个问题的时候,我什么也没有看到。
由于网站监视器的通知,我已经能够捕捉到它。 在那段时间里,我可以validationapache没有提供请求。 尽pipe我可以向服务器发送消息。 我怀疑networking问题,但是一个端口是好的,另一个是不好的。 我已经能够确认Apache不会在该服务器上从本地主机提供请求。 所以,这似乎不是硬件。
重新启动apache服务确实使网站备份,但只有几分钟。 当它停下来的时候,我就是活着的日志,而且什么都没有。 问题发生时,没有任何logging显示。 重新启动似乎总是修复它(至less24小时,有时甚至更多)。
亚马逊支持认为服务器没有问题。 我怀疑是Apache失败,服务重新启动不干净。 或者,在操作系统的内核/networking层面发生了一些事情。 而且,当CPU负载很低时,总是会发生这种情况。 内存看起来不错。 没有任何“通常的嫌疑犯”正在发生。 它只是静静地停止工作。
由于缺乏来自服务器的信息,我不知道还有什么要注意的。 我倾向于下周重build服务器,但真的想弄清楚这一点。
也许在问题中还有别的东西我应该看看。 此外,如果有任何日志,我“出现”获取更多的信息,让我知道。 目前我没有日志,我可以发布是有帮助的。 这整个事情对我来说似乎很疯狂,因为我习惯了以某种方式logging失败,特别是如果它是apache或内核(我们已经很长时间的朋友)。
我build议你下一次启动它,开始strace运行,以便在它死后,你可以调查最后发生的最后一次调用失败之前。 启动后可以使用以下命令,以确保附加到主进程及其所有subprocess以及任何分支进程的新进程。
pidlist=''; for pid in `ps ax | grep httpd | awk '{print $1}'`; do pidlist="$pidlist -p $pid"; done; strace -tt -F -f $pidlist 2>&1 |tee /root/apache_strace.out
我不知道在你的发行版中,如果Apache进程被称为httpd或者别的东西(比如apache或者apache2),但是如果它不是httpd,那么把正确的名字换成上面的命令。