2012-05-10 22 views
13

Estaba teniendo un problema con los errores aleatorios de puerta de enlace 502 con nginx y php-fpm. En mi caso, descubrí un escenario en el que varias configuraciones php.ini error_log y niveles de error_reporting hacían que aparecieran los errores aleatorios de la pasarela 502.errores de puerta de enlace aleatorio 502 con nginx php-fpm y ubuntu

Al cambiar las configuraciones de php.ini error_reporting y error_log Pude hacer desaparecer los errores de la pasarela 502, pero lo más importante fue que pude ver cuáles eran los errores de php reales en el registro y corregirlos.

El principal problema era que si "error_reporting fue configurado para mostrar avisos, 'error_logging = ON', entonces necesitaba asegurarse de que error_log se establece en un tat ruta válida se puede escribir en el servidor.

// !!! 502 Gateway Error (unhappy server) 
error_reporting = E_ALL & E_NOTICE 
; error_log = php_errors.log (note this is commented) 

// Happy Server, no 502 gateway error 
error_reporting = E_ALL & E_NOTICE 
error_log = /valid/log/path/and/permissions 

// Happy Server, no 502 gateway error 
error_reporting = E_CORE_ERROR 
; error_log = php_errors.log (note this is commented) 

Tenga en cuenta que los errores reales eran avisos php ... Sin embargo, ngingx estaba lanzando 502 errores de puerta de enlace para avisos php que estaban relacionados con propiedades que no se configuraron.

También tenga en cuenta que 502 errores de puerta de enlace no se activaron en cada aviso php.

¡Espero que esto le ahorre a alguien algo de frustración!

+1

Puede/debe editar su pregunta de nuevo a una pregunta y luego responderla usted mismo. A continuación, acepte su respuesta, para que esto se muestre como respondida. Voy a +1 a tu respuesta, también, gran pregunta, gracias. –

+1

¿Es esta una pregunta o una respuesta? ;) – Strae

Respuesta

0

Me he encontrado con esto en máquinas con Windows ejecutando iis y php en modo fastCGI, por lo que no es solo un problema de nix.

El culpable era php logging también. No tiene que establecerlo en un directorio estático, aunque si concede los permisos adecuados puede escribir en el mismo directorio en el que reside el script. (Puede ser muy útil si tiene un sitio grande y complicado)

Mi el servidor está configurado de esta manera y acabo de agregar una regla para no mostrar los registros de errores al público.

En resumen, VERIFICAR LOS PERMISOS! =)

3

502 errores de puerta de enlace en Nginx son causados ​​por php-fpm que no tiene suficiente proceso y/o tiempos de espera. El registro solo le dice cuáles son los problemas y no son la causa de los errores 502.

Uso stunnel + haproxy + nginx + php-fpm en 25 servidores. Los valores predeterminados en pfp-fpm son muy bajos, incluso para un servidor moderadamente ocupado. Configure los procesos hijos fpm de la misma manera que lo haría con apache mod_php.

I utilizar los siguientes:

pm.max_children = 250 
pm.start_servers = 20 
pm.min_spare_servers =10 
pm.max_spare_servers = 20 
pm.max_requests = 1500 

esto es un servidor con 2 GB de RAM. Sirve 20-30GB de tráfico por día sin 502's

+0

¿Dónde encontraría esta información de configuración? –

0

Tengo un problema similar que resolvió desactivando las advertencias PHP, sin embargo, creo que el problema tiene algo que ver con la configuración NGINX de los buffers que usa el registro de errores. El error solo se activa después de que se pone en cola una cierta cantidad de mensajes de advertencia, y parece ser bastante repetible; pero no puedo entender qué ajustes están involucrados así que he apagado las advertencias hasta que pueda resolver las configuraciones que están rotas.

0

Si los pasos anteriores no lo ayudan a resolver su problema, verifique si tiene eaccelerator habilitado.

desactivarlo a nivel mundial mediante la desactivación de la entrada de la carga .so, ya sea en su php.ini o php.d/eaccelerator.ini

Todos los problemas se han ido.Parece que el acelerador falla en ciertas situaciones en combinación con php-fpm.

Cuestiones relacionadas