Hello, Eugene!
On June, 28 2013 at 11:05 you wrote to Alexey Markov:
??>> Есть некий веб-сервер под FreeBSD 8.3 на базе nginx и самописной
??>> CMS на Руби. В обычное время число соединений на нём выглядит
??>> примерно так:
??>>
??>> Connections: 1404
??>>
??>> TIME_WAIT 1316
??>> ESTABLISHED 70
??>> FIN_WAIT_1 8
??>> LAST_ACK 5
??>> SYN_RCVD 3
??>> FIN_WAIT_2 1
??>> LISTEN 1
??>>
??>> В последнее время на этот веб-сервер повадились набегать боты с целью
??>> устроить DDoS. С помощью nginx все ботовые запросы успешно отсекались,
??>> но вот с числом соединений творилось неприятное:
??>>
??>> Connections: 68628
??>>
??>> FIN_WAIT_1 44255
??>> TIME_WAIT 11944
EG> http://dadv.livejournal.com/49013.html
Ага, читал этот материал, и даже комментировал. ;-)
EG> закрытое сервером соединение ожидает подтверждения закрытия от клиента,
EG> потребляя меньше памяти, чем открытое; таких соединений может быть до
EG> sysctl net.inet.tcp.maxtcptw (часть от kern.ipc.maxsockets, поэтому
EG> такие сокеты мешают открытию новых);
С соединениями в состоянии TIME_WAIT всё понятно, и их число вопросов не
вызывает вопросов. Меня больше волнует, что делать с намного бОльшим числом
соединений в состоянии FIN_WAIT_1, и можно ли их чем-то ограничить?
Пока же получается, что единственный действенный способ борьбы с ботами,
которые бомбардируют веб-сервер валидными HTTP-запросами, это задирание
лимитов на коннекты и буферы. :-/
--
WBR, Alexey Markov.