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
|