несколько fastcgi серверов
КириллХазановский
khazanovsky at yahoo.com
Sun Aug 31 01:58:55 MSD 2008
Valery Kholodkov <valery+nginxru at ...> writes:
>
> Как я понимаю, нужно крутить max_fails и fail_timeout в директиве
> upstream/server:
>
> http://www.sysoev.ru/nginx/docs/http/ngx_http_upstream.html#server
>
> убедившись, что fastcgi_next_upstream содержит слово timeout.
Валерий -- спасибо, я попробую. Я искал на интернете но не нашел (детального)
описания как nginx работает с fastcgi серверами. Я читал про load-balance и
другое но все равно многое непонятно.
Gena, мои fastcgi на Java, я не нашел никого другого кто бы это делал, но мне
нужна Java, я может позже даже их на С перепишу.
Я буду пробовать, но если можно, я опишу как я понимаю я должен мои fastcgi
сделать, пожалуйста подтвердите если я понимаю это правильно:
1. Когда я принимаю запрос от nginx в моем fastcgi сервере (accept на server
socket) я отдаю его на обработку другому thread так что я могу принимать другие
запросы от nginx.
2. nginx будет посылать запросы всем fastcgi серверам по очереди, каждый сервер
может обрабатывать много запросов одновременно.
3. Если какой-то fastcgi сервер решил что он уже перегружен (слишком много
запросов он еще не ответил), то он может послать nginx обратно ошибку (например
503) и тогда nginx его исключит на следуюшие N секунд как я задал в fail_timeout.
4. Так я могу гарантировать что запросы передаются только серверам которые я не
квалифицировал как слишком занятые (если все серверы заняты то это уже моя
проблема).
Правильно ли я это все понял?
У меня был еще вопрос если nginx может хранить соединение (socket) с fastcgi
сервером открытым вместо того чтобы открывать новое для каждого запроса?
Спасибо большое,
Кирилл Хазановский
> КириллХазановский wrote:
> > Я сконфигурировал nginx использовать два fastcgi сервера
> через upstream и
> > fastcgi_pass. Все работает отлично, запросы посылаются
> обоим серверам через раз,
> > как и ожидается.
> >
> > Теперь я вставил длинную задержку в один из fastcgi
> серверов, когда nginx его
> > вызывает, этот сёрвер спит 30 секунд.
> >
> > Я думал что запросы тому-же location которое
> перенаправляет их моим fastcgi
> > серверам будут продолжать обрабатываться вторым
> сервером который не спит и
> > отвечает моментально.
> >
> > Но что я вижу это что все запросы этому location висят и
> ждут пока тот fastcgi
> > сервер который "спит" проснется. похоже что все location
> заблокировано если один
> > из fastcgi серверов "занят".
> >
> > Я не знаю если я что-то недоконфигурировал или nginx так
> работает?
> > Я конечно имел в виду использоать несколько fastcgi
> серверов так что если один
> > занят тогда стальные могут обрабатывать запросы
> тому-же location.
>
More information about the nginx-ru
mailing list