今天正在看书的时候忽然收到服务器发来的警告信,说是服务器负荷过重。我登录后一检查,发现cpu利用率一直在 90%左右徘徊,查看了一下top,是apache占用了大部分资源。经过迅速排查,发现是一个论坛客户的网站占用资源过多。上去他的论坛看了一下,在线人数才3个,为了确认,将他的网站暂时关闭了几分钟,服务器很快就恢复正常了。检查一下log,发现是一个深圳的IP在疯狂的访问论坛导致的,将此IP用iptables封掉,恢复此论坛,服务器也没事。本来事情到此就算完了。但是我发现此捣乱的IP是深圳市的adsl,然后使用的是某个软件,user agent是固定的,于是改了一下apache的配置文件,防止其他人用同样的软件来捣乱。
 原来此论坛的目录设置如此: 

DocumentRoot /var/www/xxxxx
    <Directory "/var/www/xxxxx">
        Order allow,deny
        Allow from all
    </Directory>

加多两行就可以了

DocumentRoot /var/www/xxxxx
    <Directory "/var/www/xxxxx">
        SetEnvIfNoCase User-Agent "badguy" getout
        Order allow,deny
        Allow from all
       deny from env=getout
    </Directory>
badguy是捣乱者的user agent含有的字符,按具体情况修改,可以添加多行 SetEnvIfNoCase User-Agent "badguy" getout