php-fpm upstream pool

Maxim Dounin mdounin на mdounin.ru
Чт Дек 1 17:12:27 UTC 2011


Hello!

On Thu, Dec 01, 2011 at 09:19:43AM -0500, igor.goncharenko wrote:

> Перенес nginx  на физическую машину,
> теперь "всегда живой" бэкенд перестал
> отваливаться по таймауту (надо бы
> инвестигировать поведение фрибсд в
> виртуальной машине, но это не по теме).

Если это не в рамках одной виртуальной машины, то скорее 
исследовать надо сетевую подсистему виртуализатора.  Обычно она не 
блещет и/или имеет в себе statefull firewall, со всеми вытекающими 
прелестями в виде потери соединений при переполнении таблицы 
состояний и невозможности использования timewait'ов, пока не 
протухнет соответствующая запись в firewall'е.

> Ситуация слегка поменялясь, но все
> равно плохо - на 10000 соединений 30
> отвалились по 504 ошибке, вот таким
> образом:
> 
> 10.0.0.1 - - [01/Dec/2011:15:08:40 +0200] "GET /fcgi-proxy/ HTTP/1.1"
> 504  183 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-"
> "10.0.0.77:9003, 10.0.0.77:9004 504, 504 - 10.002, 10.002" 20.004
> SSL:-/- "gzip:-"
> 
> 10.0.0.1 - - [01/Dec/2011:15:08:40 +0200] "GET /fcgi-proxy/ HTTP/1.1"
> 504  183 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-"
> "10.0.0.77:9003, 10.0.0.77:9004 504, 504 - 10.002,10.002" 20.004 SSL:-/-
> "gzip:-"
> 
> {skip}
> причем есть и корректные, например:
> 
> 10.0.0.1 - - [01/Dec/2011:15:06:07 +0200] "GET /fcgi-proxy/ HTTP/1.1"
> 200  33 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-" "10.0.0.77:9001,
> 10.0.0.77:9002, 10.0.0.73:9000 504, 504, 200 - 10.002, 10.001, 0.006"
> 20.009 SSL:-/- "gzip:-"

Судя по всему, это одно из проявлений вот этого бага:
http://trac.nginx.org/nginx/ticket/64

> ----
> Поставил nginx 1.1.9. Намного лучше, в общем
> то, что хотелось. На 10000 соединений 504-х
> (и 502) нет вообще, а есть только 18
> соединений по 10 секунд:
> 
> HTTP/1.1 200  10.01 secs:      22 bytes ==> /fcgi-proxy/
> HTTP/1.1 200  10.01 secs:      22 bytes ==> /fcgi-proxy/
> HTTP/1.1 200  10.01 secs:      22 bytes ==> /fcgi-proxy/
> {skip}
> 
> Это потому что 1.1.X проверяет нерабочий
> бэкенд только одним запросом. Есть ли
> планы сделать так же в 1.0.X ветке?

Скорее нет, чем да.  Изменение в целом хорошее, но потенциально 
может затронуть работающие конфигурации с долгими запросами и/или 
3rd party балансировщиками.  А чем 1.1.x не устраивает?

Maxim Dounin



Подробная информация о списке рассылки nginx-ru