Re[2]: keepalive от nginx к бакэнду. запрос фичи.

Andrew Sitnikov sitnikov at infonet.ee
Tue Jun 13 09:28:13 MSD 2006


Hello sjsoft,

еще раз: keepalive тут не причем и вам не поможет. вы его не правильно понимаете.
snr> Здравствуйте, nginx-ru.

snr> Уточню моменты, которые мне показались не важными в первом письме.

snr> Господа товарищи, столкнулся  с не большим багом.
snr> 1) стоит nginx версия 3.49
snr> 2) он настроен на отдачу статики и проксирование к бакэнду.
snr> 3) В качестве бакэнда стоит сервер на тредовой моделе. Назовем его "back-serv".

snr> Теперь речь идет не о NGINX а о "back-serv".

snr> Проблема в следующем, как я понимаю, keep-alive сооединения от nginx до
snr> backend("back-serv") не устанавливаются(где в рассылке встречал, что
snr> connection: всегда close).
snr> Если один пользователь послал к примеру одновременно 7-10 запросов(к
snr> NGINX на keep-alive от браузера юзера до NGINX), NGINX создает 7-10
snr> запросов к backend("back-serv") не на одном соединение, а как
snr> отдельные соединения каждый.
snr> В этом случае, у backend("back-serv") все треды(пул из 10-ти тредов), забиваются, выполнением схожей ф-и для этого
snr> пользователя(например просмотр одной динамической таблицы, которая
snr> строится быстро, но всеже использует общиее ресурсы, используя
snr> разделение блокирование(mutex) ). Теперь, когда треды по очереди начинают блочить ресурс по
snr> пути работы ф-ии, они начинают тормозить(ожидая освобождения ресурса.)...
snr> Создается толкучка в борьбе за ресуры, сервер практически подвисает в ожидании.

snr> Мое видиние решения этой проблемы:
snr>     Сделать поддержку keep-alive соединений от NGINX до ПРОКСИРУЕМЫХ
snr>     backend'ов. В этом случае, nginx бы не открывал несколько
snr>     соединений, а довольствовался бы одним, по которому и пересылал бы
snr>     запросы от браузера одного пользователя к backend(в один тред,
snr>     к которому он бы подсоединялся).

snr> Также было бы не плохо, если бы NGINX умел собирать, соединения без
snr> keep-alive (одного пользователя, соединения с одного ip или сети) и
snr> соединясь с back-end устанавливать keep-alive соединение, передавать
snr> эти запросы по нему. Предвижу простой ответ, мол это все ненужною.

snr> какие будут идеи?

snr> Игорь, планируете ли вы когда либо, сделать настраивоемо keep-alive
snr> между nginx и backend'ами ?




-- 
Best regards,
 Andrew                            mailto:sitnikov at infonet.ee






More information about the nginx-ru mailing list