верните server_name *; # пожалуйста :)

Maxim Dounin mdounin at mdounin.ru
Thu May 29 15:35:43 MSD 2008


Hello!

On Wed, May 28, 2008 at 11:03:18PM +0400, Михаил Монашёв wrote:

> Здравствуйте, Максим.
> 
> >>> В  nginx'е  за счёт accept-фильтров можно пытаться выиграть только
> >>> немного  памяти  и  чуть-чуть  процессора.  Но  цена  за  это    -
> >>> соединения,   висящие  в  ядре  без  какого-либо  логирования  или
> >>> контроля  (в  частности  -  на  них не распространяются timeout'ы,
> >>> заданные  в  nginx.conf, а вместо этого действуют tcp timeout'ы по
> >>> умолчанию).  В результате - потерять можно существенно больше, чем
> >>> выиграть.
> 
> >>А что именно можно потерять? Чем плохи такие соединения?
> 
> MD> Тем, что они едят ресурсы в ядре. Которые, в свою очередь, имеют 
> MD> свойство кончаться.
> 
> А  соединение,  проброшенное до nginx-а, также есть память ядра в чуть
> больших  количествах,  но более управляемо. Я правильно тебя с Антоном
> понял?

Память ядра - в тех же, плюс немного памяти в самом nginx'е.

Для апача, общающегося с внешним миром, использовать 
accept-фильтры имеет прямой смысл - они освобождают worker'ов от 
лишнего ожидания.  Для nginx'а - спорно.

Я тут ещё немного поизучал вопрос - в случае accept-фильтров 
соединения, которые accept-фильтр ещё не пропустил, оседают в 
очереди unaccepted incomplete connections, и если в этой очереди 
скапливается больше чем backlog соединений - то самые старые 
ресетятся (и при этом не попадают в процесс вообще).  Т.е. видимо 
всё не так плохо как мне казалось.

> А   как   ns  ghtlkfuftim  в  nginx-е  управлять  соединениями?  Через
> reset_timedout_connection, client_header_timeout и send_timeout?

В первую очередь - client_header_timeout, ага.

> client_header_timeout  очень  похож  на httpready , разница лишь в том
> видимо, что не расходуется память ядра.

Память ядра расходуется в тех же количествах.  Разница в первую 
очередь в том, будет ли соединение закрыто по таймауту nginx'ом и 
ты узнаешь об этом из лога, или оно будет висеть в backlog'е 
непонятно сколько и в логе ты его увидишь только если (и когда) 
клиент закроет его сам.

Maxim Dounin





More information about the nginx-ru mailing list