При запросах на backend он, как я понял никогда не блокируется.
28 февраля 2012 г. 11:10 пользователь Pavel V. <pavel2000@xxxxxx> написал:
Здравствуйте, Eugene.
Вы писали 28 февраля 2012 г., 13:18:20:
> Привет всем.
> Хочу убедится что я правильно понимаю механизмы работы NGINX.
> Есть основной сервер nginx с 8 workers, в нем есть location, который проксирует на другой сервер.
> Тот, другой сервер занимается сохранением статистики.
> Вопрос: Что произойдет, если сервер статистики перестанет откликаться на запросы?
> Я думаю что, когда все workers будут ждать ответа от сервера статистики (c таймаутом по умолчанию
> 60 сек), тогда случится отказ в обслуживании основного сервера.
workers будут ждать ответа, но они будут делать это не блокируясь, т.е. будут принимать новые
соединения и будут пытаться их обработать.
Если это будет запрос к location /stat/, то nginx будет посылать запросы на "сервер статистики" aka
"бэкенд" и _ожидать_ от него ответа (неблокируюясь ждать событий на сокете, "привязанном" к запросу).
В это же время этот же worker сможет принимать новые и обрабатывать уже имеющиеся у него соединения.
1 worker обслуживает много запросов, не зависимо от того, подвисло ли соединение к бэкенду или
нет. Обработка - неблокирующаяся. Она также неблокирующаяся в большинстве других случаев, либо
старается блокироваться на минимально возможное время.