Red de conocimiento informático - Aprendizaje de programación - Cómo resolver el tiempo de espera de la puerta de enlace del error 504 de Nginx

Cómo resolver el tiempo de espera de la puerta de enlace del error 504 de Nginx

Situación 1: el búfer de respuesta del proceso fastcgi predeterminado de nginx es demasiado pequeño

En este caso, el proceso fastcgi se suspende si el equipo de servicio fastcgi no maneja muy bien la suspensión. Si está bien, puede generar un error de "Tiempo de espera de puerta de enlace 504".

Solución a la situación 1:

El búfer de respuesta del proceso fastcgi predeterminado es 8K. Podemos configurarlo más grande en nginx.conf, agregar: fastcgi_buffers 8 128k

Esto significa configurar el búfer fastcgi en 8 bloques de 128k de espacio.

Solución a la situación 1 (mejora):

Después de modificar el método anterior, si aún ocurren problemas, podemos continuar modificando los parámetros de tiempo de espera de nginx y aumentar los parámetros, como la configuración es 60 segundos:

send_timeout 60

Después de ajustar estos dos parámetros, el resultado ya no genera el error "504 Gateway Time-out", lo que indica que el efecto es bastante bueno. Problema básicamente resuelto.

Situación 2: Problemas de configuración del entorno PHP

Aquí necesitamos modificar la configuración de php-fpm y nginx. Porque en este caso también aparecerá el mensaje de error "504 Gateway Time-out".

Solución al caso 2 (modificación de configuración de php-fpm):

Cambie max_children de los 10 anteriores a 30. Esta operación es para garantizar que haya suficientes procesos php-cgi que puedan ser uso.

Cambie request_terminate_timeout de los 0 segundos anteriores a 60 segundos, lo que aumenta el tiempo de espera del script del proceso php-cgi a 60 segundos, lo que puede evitar que el proceso se suspenda y mejorar la eficiencia de utilización.

Solución a la situación 2 (modificación de la configuración de nginx):

Para reducir el número de solicitudes fastcgi y mantener los buffers lo más sin cambios posible, necesitamos cambiar varios elementos de configuración de nginx. , de la siguiente manera:

Cambie fastcgi_buffers de 4 64k a 2 256k

Cambie fastcgi_buffer_size de 64k a 128k

Cambie fastcgi_busy_buffers_size de 128k a 256k; p>

Cambie fastcgi_temp_file_write_size de 128k a 256k.

Después de modificar la solución para el caso 2, necesitamos recargar las configuraciones de php-fpm y nginx antes de realizar la prueba. Después de eso no se encontró ningún error de "Tiempo de espera de puerta de enlace 504", ¡y el efecto siguió siendo bueno!