Po debugowaniu przez 6 godzin - rezygnuję z tego: |
Mamy nginx + php-fpm + mysql w sieci LAN z prawie 100 wordpressami (stworzonymi i używanymi przez różnych projektantów / programistów pracujących nad testową konfiguracją wordpres)
Używamy nginx bez żadnych problemów od dawna.
Dzisiaj nagle - nginx zaczął zwracać „504 Gateway Time-out” niespodziewanie ...
Sprawdziłem dziennik błędów nginx dla wirtualnego hosta ...
2010/09/06 21:24:24 [error] 12909#0: *349 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 21:25:11 [error] 12909#0: *349 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 21:25:11 [error] 12909#0: *443 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 21:25:12 [error] 12909#0: *443 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 22:08:32 [error] 12909#0: *1025 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 22:09:33 [error] 12909#0: *1025 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 22:09:40 [error] 12909#0: *1064 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 22:09:40 [error] 12909#0: *1064 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 22:24:44 [error] 12909#0: *1313 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 22:24:53 [error] 12909#0: *1313 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
Gdy uruchamiam php-fpm na porcie 9000 w trybie TCP, uruchomiłem "netstat | grep 9000" i zauważyłem coś niezwykłego ... (Wklejam tutaj częściowe wyjście dla ułatwienia odczytu)
tcp 9 0 localhost:9000 localhost:36094 CLOSE_WAIT 14269/php5-fpm
tcp 0 0 localhost:46664 localhost:9000 FIN_WAIT2 -
tcp 1257 0 localhost:9000 localhost:36135 CLOSE_WAIT -
tcp 1257 0 localhost:9000 localhost:36125 CLOSE_WAIT -
tcp 9 0 localhost:9000 localhost:36102 CLOSE_WAIT 14268/php5-fpm
tcp 0 0 localhost:46662 localhost:9000 FIN_WAIT2 -
tcp 745 0 localhost:9000 localhost:46644 CLOSE_WAIT -
tcp 0 0 localhost:46658 localhost:9000 FIN_WAIT2 -
tcp 1265 0 localhost:9000 localhost:46607 CLOSE_WAIT -
tcp 0 0 localhost:46672 localhost:9000 ESTABLISHED 12909/nginx: worker
tcp 1257 0 localhost:9000 localhost:36119 CLOSE_WAIT -
tcp 1265 0 localhost:9000 localhost:46613 CLOSE_WAIT -
tcp 0 0 localhost:46646 localhost:9000 FIN_WAIT2 -
tcp 1257 0 localhost:9000 localhost:36137 CLOSE_WAIT -
tcp 0 0 localhost:46670 localhost:9000 ESTABLISHED 12909/nginx: worker
tcp 1265 0 localhost:9000 localhost:46619 CLOSE_WAIT -
tcp 1336 0 localhost:9000 localhost:46668 ESTABLISHED -
tcp 0 0 localhost:46648 localhost:9000 FIN_WAIT2 -
tcp 1336 0 localhost:9000 localhost:46670 ESTABLISHED -
tcp 9 0 localhost:9000 localhost:36108 CLOSE_WAIT 14274/php5-fpm
tcp 1336 0 localhost:9000 localhost:46684 ESTABLISHED -
tcp 0 0 localhost:46674 localhost:9000 ESTABLISHED 12909/nginx: worker
tcp 1336 0 localhost:9000 localhost:46666 ESTABLISHED -
tcp 1257 0 localhost:9000 localhost:46648 CLOSE_WAIT -
tcp 1336 0 localhost:9000 localhost:46678 ESTABLISHED -
tcp 0 0 localhost:46668 localhost:9000 ESTABLISHED 12909/nginx: wo
Istnieje wiele par „CLOSE_WAIT” i „FIN_WAIT2”, jak zaznaczono poniżej (w powyższej treści):
tcp 1337 0 localhost:9000 localhost:46680 CLOSE_WAIT -
tcp 0 0 localhost:46680 localhost:9000 FIN_WAIT2 -
Uwaga: port 46680 powyżej.
Włączyłem dziennik błędów powolnych zapytań mysql, ale to nie działało.
Odtąd restartuję php5-fpm co minutę przez cronjob (patrz polecenie poniżej), utrzymując wszystko "płynnie", ale nienawidzę patchworku i chcę rozwiązać ten ...
1 * * * * service php5-fpm restart > /dev/null
Szukałem intensywnie w Google - nie otrzymałem pomocy. Jak wspomniano, jest to serwer testowy w sieci LAN, obciążenie procesora nigdy nie jest przekraczane 0,10, a użycie pamięci jest również niższe niż 25% (System ma zainstalowaną 2 GB pamięci RAM i zainstalowany serwer Ubuntu). Więc jeśli uważasz, że jego pomieszanie czasu jest dla mnie pomocne, proszę przynajmniej upuść podpowiedź.
Z góry dziękuję za pomoc.
-Rahul
(uwaga - to jest ponowne publikowanie - http://forum.nginx.org/read.php?11,127694 )
Aktualizacja: Znalazłem odpowiedź, która jest opublikowana poniżej.
[global]
. Działa tam tylko wtedy, gdy masz tam również konfiguracje puli. Ponadto: request_terminate_timeout docs .request_terminate_timeout=30s
do mojegophp-fpm.conf
pliku spowodowało błąd (111 odmowy połączenia). Kiedy przeniosłem go do mojegowww.conf
pliku, zadziałało.Oto jak rozwiązał mój problem:
wprowadź następujące zmiany w /etc/nginx/nginx.conf w http {sekcja
a następnie uruchom ponownie nginx
/etc/init.d/nginx restart
źródło
Jeśli używasz php 5.3, zwiększ zaległości.
Jeśli używasz php 5.2, cofnij łatkę, aby zwiększyć rozmiar zaległości ze 128.
Ponadto używaj gniazda unix zamiast gniazda TCP. unix: /tmp/php5-cgi.sock (lub odpowiednia ścieżka)
źródło
Wielkie dzięki
request_terminate_timeout = 30s
Działa dla mnie idealnie
ale musiałem wstawić wiersz w tym pliku: „/etc/php5/fpm/pool.d/www.conf”, to znaczy w „części roboczej”.
PHP 5.3.21-1 - Wordpress 3.5.1
http://php-fpm.org/wiki/Configuration_File
źródło
w moim przypadku (ten sam komunikat o błędzie nginx), niektóre problematyczne skrypty php nie kończą się na wykonywaniu i nie czekają na coś, co skutkuje brakiem dzieci php5-fpm dla nginx do wybrania.
naprawić:
request_terminate_timeout=30s
pm.max_spare_servers=16
pm.min_spare_servers=2
teraz wszystko działało jak urok.
źródło
Miałem ten sam problem i rozwiązałem go całkowicie usuwając Apache:
Następnie polecam przywrócenie zarówno PHP, jak i NGINX:
źródło
Dla mnie ten sam problem wystąpił po usunięciu rabbitmq z serwera. Nic z powyższego nie było przydatne, ponowna instalacja wszystkich modułów php5 rozwiązała problem. Miałem Debiana 8.2 na tym serwerze. Nadzieja będzie dla kogoś pomocna.
źródło
Może to również pomóc ludziom:
W zależności od konfiguracji powinieneś przyjrzeć się parametrom konfiguracyjnym fastcgi, a także php ... w moim przypadku (używam apache2 + php5-fpm), a maksymalny czas wykonania zależy również od tego, jak długo moduł fastcgi czeka na odpowiedź ( -idle-timeout) ...
http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer
źródło