ПРОЕКТЫ 


  АРХИВ 


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]

php-fpm upstream pool


  • To: nginx-ru@xxxxxxxxx
  • Subject: php-fpm upstream pool
  • From: "igor.goncharenko" <nginx-forum@xxxxxxxx>
  • Date: Fri, 25 Nov 2011 08:06:37 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=EttzIdhTl++ag/m6foOG/ejl6tELwmJJu4SoF87igGg=; b=j6QjKCq7K7387oXNcLl0CuXVeVSw5Jhbx+f/5rpZa9Lnb26YvK9UGfTanTQNhVLUy6lOSQ+hqBxmOwPnnaA7L4K/rX5v/LhRTe6kGPu5sedKl2piQckI135BOd8ORLbd;

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 порт?


Таких ошибок всего 5 из 5000 (1000 concurrent = 5):
$siege fcgi-proxy-test.com/fcgi-proxy/ -d1 -r1000

Transactions:                   4995 hits
Availability:                  99.90 %
{skip}
Failed transactions:               5


лог siege:
HTTP/1.1 404   0.01 secs:      41 bytes ==> /fcgi-proxy/
{skip}
HTTP/1.1 504  60.02 secs:    1205 bytes ==> /fcgi-proxy/
HTTP/1.1 504  60.04 secs:    1205 bytes ==> /fcgi-proxy/
HTTP/1.1 504  60.02 secs:    1205 bytes ==> /fcgi-proxy/
HTTP/1.1 504  60.03 secs:    1205 bytes ==> /fcgi-proxy/
HTTP/1.1 504  60.02 secs:    1205 bytes ==> /fcgi-proxy/
{skip}
HTTP/1.1 404   0.00 secs:      41 bytes ==> /fcgi-proxy/

Siege сам не рвет сессии (у него стоит timeout
= 600 и тогда я бы видел в логе 499 ошибку).
Подскажите, что не так в этой
конфигурации пула? 

freebsd 8.2 i386/nginx-1.0.10_1,1


---
Igor

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,219032,219032#msg-219032

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.