我从LayeredTech租用一台
Linux VM,它是Xen Hypervisor的客户.操作系统是CentOS 5.3,运行Apache2.几乎每天我的服务器都会以这样的方式表现出来让我相信自己是DDoS,但我找不到任何证据.我正在运行Apache Mod_security,
MySQL 5.x,
PHP 5.x,在版本方面一切都是最新的.
VM相对较低,但是当没有出现这种症状时,它可以正常处理我的网络流量负载.
我的Web服务器将无响应,登录后将有数百个HTTPD进程.我的所有虚拟主机都是chroot并使用SUexec,但所有生成的进程都以“apache”用户身份运行.
我的盒子上没有运行恶意网站,服务器也没有显示被盗的证据.
当问题发生时我的平均负载超过250,我需要做的就是强行重启httpd,一切都可以在24-72小时之间完成.
我查看了所有可以查看的日志文件,我找不到任何DDoS的证据,任何类型的“挖掘效果”类型的流量,没有.一旦我重新启动HTTPD,无论是什么导致它产生如此多的进程,停止.如果它是由于高流量网站,大型网站上的首页链接或DDoS,我会想象请求永远不会停止,只是在重新启动httpd后立即重新启动我的服务器.
我还使用了各种工具,例如apachetop和其他实时监控工具,但我通常无法预测何时会发生这种情况,并且当它发生时,服务器太过负载甚至除了杀死HTTPD之外的任何东西.
我不知道如何防止这种情况发生,我不知道在哪里可以看到原因 – 任何想法都将不胜感激!
附加信息:
自从我构建服务器以来已经有两年了,我根据我阅读的一些内容配置了这些参数,并且从未出现过问题,但我不确定这些设置是否可能是一个贡献者:
# 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
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
# 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
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0