Simulación 502 y 504

Uno, tiempo de espera de puerta de enlace 504

Explicación oficial : cuando un servidor que funcionaba como puerta de enlace o proxy intentó ejecutar una solicitud, no pudo recibir una respuesta del servidor ascendente (el servidor identificado por el URI, como HTTP, FTP, LDAP) o el servidor secundario (como como DNS) de manera oportuna.
En términos sencillos: en LNMP, nginx no recibió información de php-fpm a tiempo para regresar. He estado esperando su php-fpm durante demasiado tiempo con nginx. Si no me responde, le diré al navegador 504.

Esta simulación también es muy simple, configure los fastcgi_read_timeoutparámetros.
Ejemplo: después de establecer un tiempo de espera de 5 segundos, vuelva a cargar la configuración de nginx y pruebe el script php sleep (6).

server {
	...
	fastcgi_read_timeout 	5; 
}
二 、 502 Puerta de enlace incorrecta

Explicación oficial : cuando un servidor que funcionaba como puerta de enlace o proxy intentó ejecutar una solicitud, recibió una respuesta no válida del servidor ascendente.
En términos sencillos: en LNMP, nginx no obtuvo una respuesta válida de php-fpm. Puede haber dos situaciones comunes, una es que php-fpm no se inicia, la otra es que phpcgi ejecuta el script en horas extras y php-fpm mata el proceso. (Además, cada proceso de php-fpm se reiniciará después de recibir una cierta cantidad de solicitudes para evitar pérdidas de memoria y causar 502 intermitentes)

La primera es cerrar php-fpm directamente y aparecerá 502.

El segundo tipo de configuración del período de tiempo de espera implica dos parámetros, a saber, php.inimedio max_execution_timey php-fpm.d/www.confmedio request_terminate_timeout. max_execution_timeEs el tiempo de ejecución del script. Una vez que se excede el tiempo de ejecución del script, se informará un error. request_terminate_timeoutEs el período de tiempo de espera de la solicitud, que se comenta y se usa de forma predeterminada max_execution_time.

(1) Primero, probamos el error de tiempo de espera de ejecución del script.
Utilice set_time_limit()funciones en los scripts para modificar temporalmente los max_execution_timeparámetros. Vale la pena señalar que las set_time_limit()funciones y las instrucciones de configuración max_execution_timesolo afectan el tiempo de ejecución del script en sí, y el tiempo fuera de la ejecución no se contará, como la función de suspensión, el tiempo de espera para las solicitudes HTTP, etc. Entonces no podemos escribir sleep () para verificar esto.

<?php

set_time_limit(2);

var_dump('start');

$start = time();
for($i = 0;;$i++) {
    
    
	if(time() - $start > 2) {
    
    
		break;
	}
}

var_dump('end');

En este momento, los dos parámetros son iguales y se producirá un error.
Inserte la descripción de la imagen aquí

(2) Luego modificamos los request_terminate_timeoutparámetros y eliminamos los comentarios. El 0 por defecto significa ilimitado, y se cambia a 1. Reinicie php-fpm, aparece 502.


Resumen: 504 es que el tiempo de espera de nginx es menor que el tiempo de espera de php-fpm y el tiempo de ejecución del script de php.ini; 502 es que el tiempo de espera de php-fpm es menor que el tiempo de espera de nginx y el tiempo de ejecución del script de php.ini.
Pensando: La página llama a una interfaz que requiere mucho tiempo para actualizar los datos. Si aparece 504, ¿se han actualizado los datos? Modifique los diferentes parámetros para probarlo usted mismo, quedará más impresionado.
Sugerencia: la configuración del parámetro anterior es demasiado pequeña, no olvide volver a cambiarla después de la prueba.

Supongo que te gusta

Origin blog.csdn.net/z772532526/article/details/105341140
Recomendado
Clasificación