Razones y soluciones para que el servidor reporte un error nginx 502 Bad Gateway

¿Qué debo hacer si aparece 502badgateway en la página del sitio web? Hoy analizaremos los motivos y las soluciones.

1. Razones para nginx 502 Bad Gateway:


La mayoría de los 502 en nginx son un problema de back-end, y luego es un problema de PHP. En el servicio de PHP, hay dos parámetros muy importantes: max_requestst y max_children. ¡La razón específica debe verificarse en el registro para comprender!

1: si se ha iniciado el proceso FastCGI

ps aux|grep php

Compruebe si se ha iniciado el servicio php-fpm;

2: si la cantidad de procesos de trabajo de FastCGI no es suficiente

Ejecute el comando de Linux:

netstat -anpo | grep “php-cgi” | wc -l

Determine si está cerca del proceso FastCGI, cerca del valor establecido en el archivo de configuración, lo que indica que la cantidad de procesos de trabajo es demasiado pequeña;

3. El tiempo de ejecución de FastCGI es demasiado largo

Aumente los siguientes valores de parámetros de acuerdo con la situación real

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

4: El búfer FastCGI no es suficiente

Al igual que apache, nginx tiene un límite de búfer frontal y los parámetros del búfer se pueden ajustar

fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;

5: otras razones

Hay demasiadas situaciones en las que ocurre 502 (por ejemplo: la configuración actual de su servidor no es compatible con su negocio existente. Tengo un amigo cuyo servidor es 8G de 4 núcleos, y 502 Bad Gateway aparece a menudo por un tiempo, y es normal por un tiempo CPU y La memoria a menudo está llena y cerca del 100%, y la carga también está cerca de 4. Finalmente, después de que la configuración se actualiza a 8-core 16G, se vuelve normal.) Es mucho más que lo que dijo el blogger! ¡Solo se puede decir que estos son los más utilizados! Por razones específicas, debe verificar el registro del servidor;

¿Cómo resolver 502 Bad Gateway mirando los registros?

2. ¿Cómo resolver el problema de la mala puerta de enlace nginx 502?


1: Ver registros de nginx

Ya que es nginx reportando un error, primero revisaremos el registro de nginx, ejecutamos el siguiente comando:

vim /fujieace/nginx/logs/error.log

No hay ningún error reportado en el registro, todo es normal, obviamente no es un problema con nginx;

2: Verifique el registro de php

Tal vez diferentes entornos, la ruta puede ser diferente, pero muy similar, continúe ejecutando el comando de Linux:

vim /fujieace/php/var/log/php-fpm.log

Resulta que hay muchos: como se muestra a continuación

ADVERTENCIA: el servidor [pool www] alcanzó la configuración pm.max_children (5), considere aumentarla;

La traducción es:

ADVERTENCIA: [Los servidores www del grupo alcanzaron la configuración pm.max_children] (5), considere aumentarlo

¡Solo necesitamos modificar el parámetro "pm.max_children"!

ilustrar:

pm.max_children = 30 //Establecer el valor máximo del proceso hijo

Ejemplo:

Cada subproceso php-fpm ocupa 20M de memoria y la memoria del servidor es 1G, excluyendo la memoria ocupada por otras aplicaciones en el sistema.

Si el sistema es 300M y los 700M restantes, 700/20 = 35, la configuración máxima es 35 y el valor puede ser ligeramente inferior a 30.

Al mismo tiempo, también necesitamos ajustar los siguientes parámetros

pm.start_servers = 10 //El número de procesos de inicio de php-fpm
pm.min_spare_servers = 10 //El número mínimo de procesos inactivos para php-fpm dinámico
pm.max_spare_servers = 24 //El número máximo de procesos inactivos para dinámico php-fpm
pm.max_requests = 500 //Tiempo de reinicio de todos los procesos secundarios

Ejemplo:

El tiempo de reinicio de todos los procesos secundarios es de 300 s, la simultaneidad es de 50 y max_children se establece en 30;

max_requests = 300*50/30=500;

Si desea que el proceso reaparezca cada hora, es 3600*50/30=6000.

Solución:


Modifique los pasos específicos del parámetro pm.max_children:


Si está utilizando un paquete de instalación con un solo clic, siga los pasos a continuación:

1. Ejecute el comando vim

vim /usr/local/php/etc/php-fpm.conf
pm.max_niños = 5

modificado directamente a

pm.max_niños = 20

Sugerencias: el valor de 20 es solo para referencia y puede seguir aumentando. Para obtener más detalles, configúrelo de acuerdo con la configuración de su propio servidor; configúrelo de acuerdo con el método de cálculo anterior; ¡más grande no es mejor! Siempre y cuando no se informe ningún error después de la configuración, ¡está bien!

Paquete de instalación de lnmp con un solo clic, si el blogger recuerda correctamente, el valor predeterminado es pm.max_children = 10;

2. Guarde y salga y reinicie php-fpm;

pkill -9 php //elimina el proceso de php./sbin/php-fpm
//reinicia el servicio de php

Si está utilizando el código fuente manual para instalar php, modifique pm.max_children y su ruta es diferente;

Sitio web por ejemplo:

vim /fujieace/php/etc/php-fpm.d/fujieace.conf

fujieace.conf fue renombrado por mí. Cuando lo instalas, lo modificas a lo que sea. La modificación predeterminada es www.conf;

Otros no son diferentes, y las operaciones anteriores son las mismas, lo principal es encontrar el archivo de configuración de php-fpm y modificar su número máximo de procesos secundarios;

Supongo que te gusta

Origin blog.csdn.net/u011055144/article/details/128596889
Recomendado
Clasificación