Tengo un servidor que funcionaba bien hasta el 3 de octubre de 2013 a las 10:50 am cuando comenzó a devolver de forma intermitente los errores "502 Bad Gateway" al cliente.
Aproximadamente 4 de cada 5 solicitudes de navegador tienen éxito, pero aproximadamente 1 de cada 5 falla con un 502.
El registro de errores de nginx contiene muchos cientos de estos errores;
2013/10/05 06:28:17 [error] 3111#0: *54528 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.66.75, server: www.bec-components.co.uk request: ""GET /?_n=Fridgefreezer/Hotpoint/8591P;_i=x8078 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.bec-components.co.uk"
Sin embargo, el registro de errores de PHP no contiene ningún error coincidente.
¿Hay alguna manera de que PHP me brinde más información sobre por qué restablece la conexión?
Esto es nginx.conf
;
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 30;
tcp_nodelay on;
client_max_body_size 100m;
gzip on;
gzip_types text/plain application/xml text/javascript application/x-javascript text/css;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /gvol/sites/*/nginx.conf;
}
Y este es el .conf
para este sitio;
server {
server_name www.bec-components.co.uk bec3.uk.to bec4.uk.to bec.home;
root /gvol/sites/bec/www/;
index index.php index.html;
location ~ \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 2592000; # 30 days
log_not_found off;
}
## Trigger client to download instead of display '.xml' files.
location ~ \.xml$ {
add_header Content-disposition "attachment; filename=$1";
}
location ~ \.php$ {
fastcgi_read_timeout 3600;
include /etc/nginx/fastcgi_params;
keepalive_timeout 0;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
## bec-components.co.uk ##
server {
server_name bec-components.co.uk;
rewrite ^/(.*) http://www.bec-components.co.uk$1 permanent;
}
PHP
scripts. No estoy usandophp-fpm
, solo estoy corriendophp-fastcgi
haciendophp-cgi -b 127.0.0.1:9000
. Ha estado funcionando sin fallas durante 3 años. No puedo entender por qué ha desarrollado este problema.php-cgi -b 127.0.0.1:9000
) falla intermitentemente, tal vez debido al aumento del tráfico y la falta de recursos.Respuestas:
Siempre confiaría si mis servidores web me dicen:
502 Bad Gateway
Qué significa eso:
nginx no puede acceder a su proceso fastcgi; ya sea para disminuir o no corresponde en absoluto. puerta de enlace incorrecta significa: nginx no puede fastcgi_pass a ese recurso definido 127.0.0.1:9000; en ese momento muy específico .
sus registros de errores iniciales lo dicen todo:
.
desde mi punto de vista limitado, sugeriría:
fuente
Gateway
en este caso es el servidor PHP. Gracias.restart your fastcgi_process / server
es lo que me ayudó, thansSé que este tema es antiguo, pero todavía aparece de vez en cuando, así que, buscando respuestas en la web, encontré las siguientes tres posibilidades:
session.save_path = "/var/lib/php/sessions"
. Esto puede ser malos permisos, mala propiedad, mal usuario / grupo o más problemas esotéricos / oscuros como quedarse sin inodos en ese directorio (¡o incluso un disco completo!). Esto generalmente no dejará muchos volcados de núcleo y posiblemente ni siquiera nada en los registros de errores de PHP.fuente
Seguí recibiendo esto también. Lo resolvió aumentando el
opcache
límite de memoria, si lo usa (reemplazo de APC). Parece que PHP-FPM desconectó las conexiones cada vez que el caché se llenó demasiado. Esta es también la razón por la cual la respuesta de shgnInc lo soluciona por un corto tiempo.Así que encuentre el archivo
/etc/php5/fpm/php.ini
(o equivalente en su distribución) y aumentememory_consumption
al nivel que su sitio necesite. La desactivaciónopcache
también puede funcionar.fuente
Es posible que desee considerar este git en github: https://gist.github.com/amichaelgrant/90d99d7d5d48bf8fd209
Encontré una situación similar, cuando revisé los registros de errores de mis servidores ascendentes, informaban algún error ulimit, así que lo aumenté a 1000000 (en los cuadros ascendentes y nginx) y todo funcionó bien
fuente
En mi caso del mismo problema, simplemente reinicio el
php-fpm
servicio para que se solucione.O algunas veces este problema ocurre debido a la gran cantidad de solicitudes. Por defecto,
pm.max_requests
en php5-fpm quizás sea 100 o inferior.Para resolverlo, aumentar su valor depende de las solicitudes de su sitio, por ejemplo 500.
Y después de que tengas que reiniciar el servicio
fuente
En mi caso, deshabilitar la extensión xdebug ayudó.
fuente
Acabo de tener un problema similar:
Se conecta a php-fpm en el puerto 9000. (fastcgi: //127.0.0.1: 9000)
La configuración estándar en Ubuntu en mi servidor es:
/etc/php/7.0/fpm/pool.d/www.conf:
listen = /run/php/php7.0-fpm.sock
tienes que cambiar esto a:
listen = 0.0.0.0:9000
En mi caso, actualicé mi servidor hace 1 1/2 mes, sobrescribiendo mi configuración de costom con el valor predeterminado. Ahora, después de reiniciar php-fpm, este error entró en vigencia con retraso.
fuente
Para mí, el servidor se estaba quedando sin memoria y php-fpm fue asesinado por OOM killer. La solución fue aumentar la cantidad de memoria del servidor.
fuente
Para mí fue porque php-fpm estaba llegando al
max_children
límite. El registro php-fpm para el grupo en cuestión me señaló en la dirección correctafuente
Este problema también puede surgir si un proceso PHP-FPM excede su límite de memoria asignado. Cuando esto sucede, la conexión entre NGINX y PHP-FPM se corta y NGINX devuelve a
502 Bad Gateway
. El límite de memoria del proceso PHP-FPM está controlado por lamemory_limit
variable. Esto se puede configurarphp_admin_value[memory_limit]
en el archivo de configuración PHP-FPM.Es importante tener en cuenta que el límite de memoria se aplica por script . Con
n
los procesos PHP-FPM, el uso total de memoria puede ser de hastamemory_limit * n
. ¡Asegúrese de verificar que su máquina tenga suficiente espacio libre de memoria!fuente