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

sjsoft at newmail.ru sjsoft at newmail.ru
Tue Jun 13 10:00:01 MSD 2006


Здравствуйте, Andrew.
> еще раз: keepalive тут не причем и вам не поможет. вы его не правильно понимаете.
Я с вами полностью и категорично не согласен. Боюсь вы все-же поверхностно ознакомились с моей проблемой.

keep-alive - по сути, передача нескольких запросов, на одном сокет
соединении. В этом случае, у меня был бы открыт один сокет в одном
треде на одного юзера.

   Проблема не такая уж и не понятная. Попробую ее нарисовать.

BACKEND создает пул из тредов, в каждом из них стоит mutex, один из
тредов, постоянно слушает сокет, остальные в это время висят на
мутексе.
thread 1 (accept)
thread 2 (mutex block)
...
thread 10 (mutex block)

Схема взаимодействия сейчас.

ka - keep-alive
cc - conection close
req - request по keep-alive

Юзеры посылают по 3 запроса, на одном keep-alive соединении
USER1<-ka-> NGINX <-cc-> BACKEND thread 1 (wrk with table 1)
     <-req->      <-cc-> BACKEND thread 2 (blocked on mutex table 1)
     <-req->      <-cc-> BACKEND thread 3 (blocked on mutex table 1)
USER2<-ka-> NGINX <-cc-> BACKEND thread 4 (wrk with table 2)
     <-req->      <-cc-> BACKEND thread 5 (blocked on mutex table 2)
     <-req->      <-cc-> BACKEND thread 6 (blocked on mutex table 2)
USER3<-ka-> NGINX <-wait-> Ждет, пока будет свободен хоть один тред.
... и так далее

Также посылаются 3 запроса от каждого юзера, но картина другая(именно
так бы мне хотелось)
USER1<-ka-> NGINX <-ka-> BACKEND thread 1 (wrk with table 1)
USER2<-ka-> NGINX <-ka-> BACKEND thread 2 (wrk with table 2)
USER3<-ka-> NGINX <-ka-> BACKEND thread 3 (wrk with table 3)
USER4<-ka-> NGINX <-ka-> BACKEND thread 4 (wrk with table 4)
все req находятся на ka в одной очереди от одного юзера.



и схема, которую бы хотелось в дополнение иметь.

USER1<-cc-> NGINX <-ka-> BACKEND thread 1 (wrk with table 1)
USER1<-cc-> NGINX идентификация по ip, куку(формальности) идут на этот keep-alive выше
USER1<-cc-> NGINX
USER1<-cc-> NGINX
USER2<-cc-> NGINX <-ka-> BACKEND thread 2 (wrk with table 2)
USER2<-cc-> NGINX идентификация по ip, куку(формальности) идут на этот keep-alive выше
USER2<-cc-> NGINX
USER2<-cc-> NGINX



-- 
С уважением,
 sjsoft                          mailto:sjsoft at newmail.ru






More information about the nginx-ru mailing list