Igor Sysoev <is@...> writes:
On Sat, Jun 02, 2007 at 07:05:04AM +0000, Stan wrote:
Наш сервер повадились атаковать. Во время атаки
число writing connections
доходит до лимита (15К), в результате nginx ругается на то,
что слишком много
коннектов и отвечает не на все запросы.
Вопрос в следующем: как атакующие добиваются этого
(большого числа открытых
writing коннектов) и как с этим бороться ?
Какая ОС ?
Нужно увеличивать worker_connection, число файлов, сокетов,
сетевых буферов.
Нужно уменьшать таймауты, размер буфера отправки.
Ещё можно поставить
reset_timedout_connection on;
ОС: Linux, kernel 2.6.8
В ядре вроде всё, что можно, поуменьшал:
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout=25
net.ipv4.tcp_keepalive_time=1200
worker_connections сейчас стоит 8192.
Вообще хочется для атакующих сразу DROP в iptables делать, чтобы лишние ресурсы
не расходывали. Однако, почему-то limit_zone_module не видит этого множества
установленных коннектов и не блокирует их. Я так понимаю, эти запросы повисают
где-то до NGX_HTTP_PREACCESS_PHASE :-/