On 28.05.2008 16:08, Монашёв Михаил wrote:
Здравствуйте, Максим.
В nginx'е за счёт accept-фильтров можно пытаться выиграть только
немного памяти и чуть-чуть процессора. Но цена за это - соединения,
висящие в ядре без какого-либо логирования или контроля (в частности
- на них не распространяются timeout'ы, заданные в nginx.conf, а
вместо этого действуют tcp timeout'ы по умолчанию). В результате -
потерять можно существенно больше, чем выиграть.
А что именно можно потерять? Чем плохи такие соединения?
Каждая tcp-коннекция требует памяти в ядре, а она не резиновая.
Во FreeBSD/amd64, например, нельзя использовать больше 2 Gb KVM.
Но расход памяти будет существенным только если таких коннекций десятки
тысяч.
В случае если эти коннекции будет обрабатывать nginx память в ядре они
конечно тоже занимают, но к ним переменяется таймаут из nginx.conf
который можно уменьшать (при неблагоприятных внешних условиях, например
DoS).