Это сценарий, он поставляется с mod_evasive:
#!/usr/bin/perl
#test.pl: small script to test mod_dosevasive's effectiveness
use IO::Socket;
use strict;
for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "MY_IP:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
$response = <$SOCKET>;
print $response;
close($SOCKET);
}
Если я запустил этот сценарий на своем ПК, заменив «MY_IP» IP-адресом моего VPS (openVZ, 3 ядра ЦП 2,53 ГГц, 1 ГБ оперативной памяти), загрузка ЦП на сервере увеличится очень быстро. Если я запускаю 3 или 4 экземпляра скрипта одновременно, загрузка процессора достигает 100%. После остановки скриптов загрузка ЦП возвращается к 5-10%.
Это нормально ?? CSF установлен, и он блокирует IP-адреса с более чем 300 подключениями, но, похоже, он не блокирует этот скрипт. Если я проверю netstat -n | grep MY_PC_IP
, Я никогда не вижу больше 30-40 подключений, даже при запуске скриптов.
Если вы запустите сценарий на своем сайте, увеличивается ли загрузка ЦП? Что не так с моим сервером или apache?
В чем проблема со 100% загрузкой процессора? У вашего скрипта нет таймаутов, поэтому, очевидно, он полностью загрузит целевой сервер. 100% использование ЦП не означает, что сервер умирает, просто он работает. Действительно ли сервер перестает отвечать или дает сбой?