¿Qué significa el tiempo de espera de la puerta de enlace?

Esta situación puede deberse a que el búfer de respuesta del proceso fastcgi predeterminado de nginx es demasiado pequeño, lo que provocará que el proceso fastcgi se suspenda. Si su servicio fastcgi no maneja bien esta suspensión, entonces es muy probable. para provocar al final un tiempo de espera de puerta de enlace 504. Los sitios web actuales, especialmente algunos foros, tienen una gran cantidad de respuestas y mucho contenido, y una página puede incluso tener cientos de KB.

Situación 1: porque 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. Bueno, si está bien, puede aparecer el error "504 Gateway Time-out".

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 espacio de 128k.

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 Timeout", lo que indica que el efecto es bastante bueno. Pregunta Básicamente resuelta.

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 dos (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 e intentar mantener los buffers sin cambios, 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!