Tuning FreeBSD 7.2 amd64 for high load nginx web server.

Anton Yuzhaninov citrin на citrin.ru
Ср Дек 23 13:23:33 MSK 2009


Михаил Монашёв wrote:

>                 listen          83.222.4.74:80 default accept_filter=httpready rcvbuf=4096 sndbuf=131072;

Как сдесь уже неоднократно обсуждалось accept_filter довольно спорная вещь при
наличии nginx. С одной стороны коннекция в ядре дешевле коннекции в ядре. С
другой стороны коннекцией nginx легче управлять (обрывать по таймуту).

Соединения, которые не прошли accept_filter могут висеть долго, возможно вечно.

Т. е. если есть accept_filter то DDoS-ер можно подключаться и слать запрос по
одному байту в 10 минут. В итоге его коннекция будет очень долго висеть на
сервере и кушать его ресурсы (т. е. атакующий может просто открыть
kern.ipc.maxsockets коннекция и расходуя мало трафика их поддерживать открытыми).

Если accept_filter нет, то nginx просто закроет такое соединение когда истечет
таймаут client_header_timeout (который в условиях DoS можно сделать небольшим).

-- 
 Anton Yuzhaninov



Подробная информация о списке рассылки nginx-ru