32 votos

Nginx + php-fpm "504 Gateway Time-out" error con casi cero de carga (en un test-server)

Después de la depuración de 6 horas estoy dando esta :|

Tenemos una nginx+php-fpm+mysql en LAN con casi 100 wordpress (creado y utilizado por diferentes diseñadores/desarrolladores que trabajan en la prueba de wordpres de instalación)

Estamos usando nginx sin ningún problema de largo.

Hoy en día, de repente - nginx, comenzaron a regresar "504 Gateway Time-out" de la nada...

He comprobado nginx registro de error para un host virtual...

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"

Como puedo ejecutar php-fpm en el puerto 9000 a través de TCP modo, me encontré con "netstat | grep 9000" y notó algo inusual... (Pegar parcial de salida de aquí para facilitar la lectura)

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             

Hay un montón de "CLOSE_WAIT" & "FIN_WAIT2" pares como se destaca más adelante (en el resultado anterior):

tcp     1337      0 localhost:9000          localhost:46680         CLOSE_WAIT  -               
tcp        0      0 localhost:46680         localhost:9000          FIN_WAIT2   -

Por favor nota el puerto 46680 anterior.

Yo habilitado mysql consultas lentas registro de errores, pero no funcionó.

A partir de ahora a reiniciar php5-fpm cada minuto, a través de un cronjob (ver comando de abajo) mantener todo funcionando "sin problemas" pero no me gusta patchwork y quieren resolver este...

1 * * * * service php5-fpm restart > /dev/null

He buscado exhaustivamente en Google - no tiene ayuda. Como se ha mencionado, esta es una prueba de servidor en la LAN, la carga de la CPU es nunca cruzó por 0.10 y uso de memoria de también está por debajo del 25% (el Sistema tiene 2 gb de RAM y ubuntu-server instalado) Así que si usted encuentra su tiempo confuso para que me ayude, por favor, al menos colocar una sugerencia.

Gracias de antemano por la ayuda.

-Rahul

(nota - este es el traspaso de http://forum.nginx.org/read.php?11,127694)

Actualización: he encontrado respuesta, que se publica a continuación.

32voto

MrZebra Puntos 6508

He encontrado respuesta en mi publicación en nginx foro - http://forum.nginx.org/read.php?2,127854

La respuesta, en mi caso, es establecer:

request_terminate_timeout=30s

en php-fpm config.

Tenga en cuenta que usted puede utilizar valores distintos de 30 años también.

Yo lo he utilizado para que coincida con mi valor principal de php.archivo ini que es:

max_execution_time = 30

Gracias A Todos. :-)

17voto

Vijay Kumar Puntos 121

He aquí cómo se ha resuelto mi problema:

hacer los siguientes cambios a /etc/nginx/nginx.conf en http { sección

proxy_connect_timeout  600s;
proxy_send_timeout  600s;
proxy_read_timeout  600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;

y, a continuación, reiniciar nginx

/etc/init.d/nginx restart

4voto

karmawhore Puntos 3147

Si está usando php 5.3, aumentar la cartera de pedidos.

Si está usando php 5.2, backport el parche para aumentar la cartera de pedidos tamaño de 128.

También, el uso de un socket de unix en lugar de un socket TCP. unix:/tmp/php5-cgi.calcetín (o la ruta)

3voto

Franck Puntos 21

Genial, gracias

request_terminate_timeout=30s

Funciona a la perfección para mí

pero, tuve que insertar la línea de este archivo : "/etc/php5/fpm/piscina.d/www.conf", es decir, en la "Sección de Trabajador".

PHP 5.3.21-1 - Wordpress 3.5.1

http://php-fpm.org/wiki/Configuration_File

0voto

Nikolay Puntos 11

Yo tenía el mismo problema y lo resuelto por completo removeing Apache:

yum remove httpd

Después de que yo recomiendo restaring tanto en PHP NGINX:

/etc/init.d/nginx restart
/etc/init.d/php-fpm restart

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: