Linux服务器HTTP进程每天挂起服务器

我租用了一个来自LayeredTech的Linux虚拟机,它是Xen虚拟机pipe理程序的一个访客。 操作系统是运行Apache2的CentOS 5.3。 几乎每天我的服务器的行为都会导致我相信自己正在被DDoS攻击,但我找不到任何证据。 我正在运行Apache Mod_security,MySQL 5.x,PHP 5.x,所有版本都是最新的。

虚拟机是相对低功率,但是当这种症状没有发生,它处理我的networkingstream量负载就好了。

我的networking服务器将无响应,login后将有数百个HTTPD进程。 我所有的虚拟主机都被chroot和使用SUexec,但所有产生的进程作为“apache”用户运行。

没有恶意网站运行在我的盒子上,服务器显示没有被盗用的证据。

当问题发生时,我的负载平均值超过250,我所需要做的就是强制重启httpd,并且在24-72小时之间的任何地方都可以正常工作。

我查看了所有我能想到的日志文件,我找不到任何DDoS的证据,任何types的“digg效果”types的stream量,什么都没有。 只要我重新启动HTTPD,无论是造成它产生这么多的进程,停止。 如果是由于高stream量的网站,一个巨大的网站上的首页链接或DDoS,我会想象这些请求将永远不会停止,只需重新启动httpd后再挂起我的服务器。

我还使用了各种工具,如apachetop和其他实时监控工具,但是我通常无法预测何时会发生这种情况,并且在发生这种情况时,服务器远远超负荷,甚至除了杀死HTTPD之外的任何东西。

我不知道如何防止这种情况发生,我不知道在哪里可以看到的原因 – 任何想法,将不胜感激!

附加信息:

从构build服务器到现在已经有2年多了,我根据自己读过的东西configuration了这些参数,从来没有遇到过任何问题,但是我不确定这些设置是否会成为贡献者:

# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # ServerLimit: maximum value for MaxClients for the lifetime of the server # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> # worker MPM # StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connections # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> 

你确定没有什么日志?

您可以configurationApache的MPM worker来限制它启动/pipe理的进程数量。

还有一个鲜为人知的DDoS攻击,它保持连接活动(HTTP的Keep-Alive机制),而不是在完成时closures它们,这可能导致数百个额外的进程启动,因为Apache认为它正在处理来自这些DDoS进程的请求并生成新的stream程的新的。

当你重新启动Apache时,它会杀掉这些stream氓进程,从而终止连接,所以这取决于攻击者需要多长时间才能意识到它已经断开连接,然后重试。

您也可以启用服务器状态和服务器信息处理程序,并在开始忙于识别服务器正在执行的操作时观察它们。

http://httpd.apache.org/docs/2.2/mod/mod_status.html

http://httpd.apache.org/docs/2.2/mod/mod_info.html