Apache冻结,如何检测哪个虚拟主机受到攻击?

我有一台生产服务器,在过去的24小时内,由于冻结,硬盘重启了4次。 平安很好,但所有其他服务超时(Apache,SSHd等)。 我现在已经诊断出Apache是​​因为在启动Apache的几秒钟内突然发生大量的subprocess而导致内存不足的。 刚刚重启后停止Apache,服务器再次稳定。

我的两个问题是:

  1. 有没有办法检测哪个虚拟主机突然被攻击,而无需逐一查看每个虚拟主机的访问日志?

  2. 有没有一种方法来快速启用/禁用虚拟主机没有评论(#)他们全部在httpd.conf?

一些系统细节:

Fedora 10,x86_64,PHP 5,Apache 2.2

尝试使用mod_status设置状态页面。 如果在启动服务器之后可以进入,则应该看到类似这样的页面,该页面显示与相应的虚拟主机和URL的每个连接。

如果您的网站被大量淹没,您无法进入,请尝试运行netstat -nt | grep :80 netstat -nt | grep :80或者lsof -ni tcp:80来查看是否有一个或者两个地址泛滥你的站点并相应地应用iptables。

1)我经常使用lsof来查看apache在高负载时间打开的文件/目录。 所以例如(在Debian / Ubuntu的),你可以运行:

 lsof -u www-data 

然后获得更有用的东西,只在正确的位置(例如/ home)search打开的文件,然后排除应始终打开的日志文件。

 lsof -u www-data | grep /home | grep -v *.log 

您可能需要运行几次以了解经常运行的内容。

2)如果你正在运行debian / ubuntu,你可以使用a2ensitea2dissite自动添加和删除你的apache设置的虚拟主机。