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.

Ответить