ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



Здравствуйте, nginx-ru.

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

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

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

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

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

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

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

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




 




Copyright © Lexa Software, 1996-2009.