php-fpm upstream pool

Maxim Dounin mdounin на mdounin.ru
Пт Ноя 25 14:43:52 UTC 2011


Hello!

On Fri, Nov 25, 2011 at 08:06:37AM -0500, igor.goncharenko wrote:

> Hi!
> 
> Тестирую php-fpm пул и nginx балансером к
> нему. Требования - если один или
> несколько из серверов пула начинают
> отвечать дольше чем 30 сек - запрос
> отправлять на другой сервер пула:
> 
> nginx.conf:
> 
> http {
> 
> {skip}
> 
>   fastcgi_connect_timeout 3;
>   fastcgi_next_upstream error timeout invalid_header;
>   fastcgi_read_timeout 30;
>   fastcgi_send_timeout 3;
> 
> {skip}
> 
> vhost.conf:
> 
> {skip}
> 
> upstream  fcgi_proxy {
>   server   10.0.0.10:9000 max_fails=1 fail_timeout=240s; # answer more
> than 60 sec
>   server   10.0.0.11:9000 max_fails=1 fail_timeout=240s; # answer more
> than 60 sec
>   server   10.0.0.12:9000 max_fails=1 fail_timeout=240s; # ok
>   }
> 
> 
> location ~ ^/fcgi_proxy/$ {
> 
>             include /usr/local/etc/nginx/fastcgi_params;
> 
>             fastcgi_param SCRIPT_FILENAME /home/fcgi_proxy/index.php;
>             fastcgi_param HOST            $host;
>             fastcgi_pass fcgi_proxy;
> 
>            allow all;
>       }
> 
> {skip}
> 
> Пул работает отлично пока два сервера
> их трех начинают отвечать долго (см
> коментарий в upstream, эмулируем timeout
> больше 30 сек). В этом случае
> проскакивают такие ошибки:
> 
> 10.0.0.1 - - [25/Nov/2011:12:38:26 +0000] "GET /fcgi-proxy/ HTTP/1.1"
> 504  1205 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-"
> "10.0.0.10:9000, 10.0.0.11:9000 : 10.0.0.12:80 504, 504 : 404 - 30.008,
> 30.007 : 0.002" 60.017 SSL:-/- "gzip:-"
> 
> То-есть 2 первых сервера их пула
> "ответили" 504 (не отработали по
> таймауту), третий отработал правильно и
> вызад 404 (в данном случае это корректный
> ответ), но клиент все равно получил 504
> ответ, хотя как я понимаю, должен был
> получить 404.
> 
> и вот это еще странно 10.0.0.12:80 - откуда
> берется 80 порт?

После ":" - это уже работа с другими upstream'ами, видимо после 
срабатывания error_page.  В первой части сервер 10.0.0.12:9000, 
судя по всему, был ранее признан негодным, и потому на него даже 
не пытались ходить.

Maxim Dounin



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