Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: keepalive от nginx к бакэнду. запрос фичи.
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@xxxxxxxxxx
|