高CPU +内存,没有访问者

目前这是我运行顶部时得到的

Tasks: 151 total, 2 running, 149 sleeping, 0 stopped, 0 zombie Cpu(s): 74.1%us, 1.3%sy, 0.0%ni, 43.6%id, 0.0%wa, 0.0%hi, 0.3%si, 3.6%st Mem: 4045608k total, 3447088k used, 598520k free, 13588k buffers Swap: 131068k total, 0k used, 131068k free, 387916k cached 3569 www-data 20 0 349m 72m 14m S 14 1.8 1:49.47 apache2 3572 www-data 20 0 349m 72m 14m S 14 1.8 1:47.16 apache2 3611 www-data 20 0 348m 70m 13m R 14 1.8 1:43.37 apache2 3565 www-data 20 0 349m 71m 13m S 13 1.8 1:45.07 apache2 3608 www-data 20 0 349m 73m 14m S 13 1.9 1:45.83 apache2 3550 www-data 20 0 349m 71m 13m S 13 1.8 1:49.43 apache2 3574 www-data 20 0 349m 72m 14m S 13 1.8 1:42.73 apache2 3602 www-data 20 0 349m 71m 13m S 13 1.8 1:40.62 apache2 3603 www-data 20 0 349m 71m 12m S 12 1.8 1:44.38 apache2 3561 www-data 20 0 349m 72m 14m S 12 1.8 1:45.13 apache2 3564 www-data 20 0 349m 72m 14m S 12 1.8 1:44.19 apache2 3531 www-data 20 0 349m 72m 14m R 6 1.8 1:43.68 apache2 3543 www-data 20 0 349m 72m 14m R 6 1.8 1:46.76 apache2 3604 www-data 20 0 349m 72m 14m S 2 1.8 1:44.09 apache2 3549 www-data 20 0 343m 66m 14m R 2 1.7 1:45.05 apache2 3052 mysql 20 0 2361m 83m 11m S 1 2.1 0:22.64 mysqld 1 root 20 0 24332 3224 2316 S 0 0.1 0:00.95 init 

通过日志文件看来,我确实打了maxClients,但我不知道这是如何发生的,因为没有人正在查看该网站..目前的Apacheconfiguration如下:

 <IfModule mpm_prefork_module> StartServers 2 MinSpareServers 6 MaxSpareServers 12 MaxClients 50 MaxRequestsPerChild 3000 </IfModule> 

这只是随机发生,没有更新,没有变化。

虽然有很多方法可以解决这个问题,但是我在ServerFault上发现了一个老问题 ,它提出了一个简单的iptables规则

 iptables -I INPUT -p tcp --dport 80 \ -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP 

您可以使用apache2ctl fullstatus来获取远程客户端和他们正在查看的URL的完整列表。 编辑 :要清楚,我正在谈论Apache的mod_status。 加载后,你可以发出(在terminal)上述命令,以具有Apache状态的详细转储。

如果检测到模式(例如:从单个远程IP打开的连接太多),则可以使用fail2ban来阻止请求的客户端。