ПРОЕКТЫ 


  АРХИВ 


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: Persistent HTTP connections && Pipelining





14.11.07, MZ <zuborg@xxxxxxxxxxxxxxxxxxx> написал(а):
В ср, 14/11/2007 в 15:07 +0300, Alexey Karagodov пишет:

>
>         > А по поводу схемы балансировки по времени ответа очень
>         хорошо сказал
>         > на РИТе Олег Оболенский из Яндекса - "пятисотки отдаются
>         офигенно быстро".
>
>
> ошибки 5ХХ наверно
они, только непонятно почему при балансировке по загрузке они должны
возникать чаще чем при балансировке по кол-ву обработанных запросов.

непонял :)  

>         Не присутсвовал, из контекса не понимаю про какие пятисотки
>         идет речь. И
>         не понимаю что за "балансировка по времени ответа" - я
>         вообще-то имел
>         ввиду балансировку по текущей загруженности бекендов - по
>         текущему
>
>
> как Вы узнаете загруженность бекенда? Cisco CSS в нгинх вкрячить?
Сейчас загруженность вообще никак не узнается. Запросы шлются по
очереди, с учетом весов. Мое предложение состояло (и сейчас состоит, я
просто давно уже об этом писал, но особого интереса оно не вызвало) в
том что загрузка должна определяться по текущему кол-ву запросов,
которые определенный бекенд обрабатывает в данный момент - чем больше
запросов он обрабатывает тем больше шансов что он загружен, и
следовательно новый запрос надо проксировать на тот бекенд что не сильно
занят обработкой запросов, с учетом проставленных весов, но независимо
от того сколько запросов было обработано каким-либо бекендом в прошлом.

всё гораздо проще. как это сделано на моих площадках: 
нгинх отдаёт по фастцги на несколько пхп-серверов 
тайм-аут соединения - 1 с 
тайм-аут получения ответа - 20 с (скрипты очень тяжёлые на некоторых площадках, в идеале надо ставить секунды 4 конечно) 
так вот, за 5 сек не успел, 5ХХ ошибка получилась, обработали (неважно как, повторили запрос на фастцги, нарисовали красивую хтмл-ю страничку, что угодно) 
зачем тут pipelining, keep-alive и пр. красивые и умные слова 
ну как pipeline с keep-alive-ом тут помогут бекенду? если физически не способоен "держать" больше 50 юзеров (к примеру) в секунду с их безмерными хотелками 
бекенду - НИКАК. если он МРЁТ, он будет УМИРАТЬ ВСЕГДА 
тут только одно мне видется, была проблема, когда при раздаче запросов нгинх "перебирал" сервера пхп-фастцги и возникала большая куча tcp коннектов, сервер отваливался, невозможно было с ним установить новое tcp соединение 
куча коннектов возникала потому, что все сервера пхп были загружены запросами по самое небалуйся, а им приходили и приходили новые запросы 
вот тут бы pipelining между nginx и php fastcgi помог бы, но и то, ЗАЧЕМ он там? 
гораздо проще и надёжнее грамотно и красиво (а способов КУЧИ несметные) обработать ошибки 5ХХ и не заниматься извратом  

если проблема в другом, например пхп всегда в определённые границы времени вписывается, то начинается проблема с tcp стеком, ну вот хотим мы на одном сервере держать 8 к коннектов. но тут надо tcp нормально настроить (sysctl) и можно будет спокойно ждать нормальной реализации pipelining-а 


>         кол-ву запросов в обработке бекендом. А не балансировать по
>         кол-ву
>         запросов вообще, как сейчас.
>
>
> если только косвенно определить, сколько отдали запросов, сколько
> получили, разница и будет показателем примерной загруженности
> если чего на бекенде не случится
Эта разница равна кол-ву запросов, которые бекенд обрабатывает в данный
момент, верно ? 

примерно так (в штатной ситуации - точно так). точную цифру может сказать только сам бекенд, при условии, что он этим функционалом обладает 
 

 



 




Copyright © Lexa Software, 1996-2009.