![Todo lo que necesita saber sobre los tiempos de espera de NGINX](/image/original/f8a58fe4-1c0d-11ef-be6c-002590e76e7d.png)
Todo lo que necesita saber sobre los tiempos de espera de NGINX
NGINX es un popular servidor multipropósito que enlaza partes de la red externa/interna y también da acceso a los datos y archivos dinámicos. Aquí en este escrito, hablaremos específicamente sobre los timeouts de NGINX y cómo manejar todo correctamente deshabilitando y configurando varios timeouts. Los timeouts son esenciales si hablamos del aspecto de configuración porque especifican el periodo durante el cual el servidor espera un evento específico antes de su terminación. Son extremadamente importantes e influyen en la estabilidad de los servidores así como en la detención del agotamiento de recursos. Así que, si este tema le parece interesante, a continuación compartiremos todas las recomendaciones prácticas relativas a los timeouts.
Fundamentos de los tiempos de espera de NGINX
Estos son algunos de los fundamentos de los timeouts de NGINX:
- send_timeout - está relacionado con el tiempo máximo de envío de la respuesta al cliente (según la configuración por defecto, es 60). Es crucial detener los retrasos en la respuesta y gestionar los clientes lentos.
- client_body_timeout - este tiempo caracteriza el tiempo máximo que se necesita para leer el cuerpo de la petición (60 por defecto). En caso de que esta petición no se reciba, la conexión se cerrará y esto es necesario para tratar con grandes envíos o subidas de archivos.
- keepalive_timeout - es el tiempo máximo que la conexión del cliente debe estar en el servidor (el parámetro inicial es 75 por defecto mientras que el segundo es 60 por defecto).
- client_header_timeout - es el tiempo máximo que se necesita para leer la cabecera de la petición (el parámetro por defecto es 60). Cuando la cabecera no se recibe durante un cierto tiempo, la conexión se cerrará. Esta variante de tiempo de espera es necesaria para prevenir peticiones parciales o lentas.
- lingering_timeout - este ciclo (por defecto 30) puede repetirse durante el tiempo máximo en caso de que lingering_close esté activado. Este parámetro establece el tiempo máximo para que lleguen más datos del cliente.
Tiempo de espera TCP de bajo nivel en NGINX
Si hablamos de bajo nivel, entonces la directiva listen tiene keepalive y este parámetro es necesario para la configuración del socket TCP. Activándolo o desactivándolo, estamos utilizando un mecanismo esencial de keepalive.
También podemos utilizar una lista separada por dos puntos:
- keepintvl – establece TCP_KEEPINTVL
- keepidle – establece TCP_KEEPIDLE
- keepcnt – establece TCP_KEEPCNT
Al ignorar cualquiera de los parámetros mencionados, está dejando la configuración por defecto.
proxy_* Tiempos de espera en NGINX
Aquí compartimos sólo 3 de los valores de timeout más frecuentes para NGINX, y son los siguientes:
- proxy_send_timeout - tiempo máximo necesario para enviar la petición (por defecto 60)
- *_connect_timeout - tiempo máximo que se necesita para conectarse al servidor (por regla general menos de 75, pero el parámetro por defecto es 60)
- *_read_timeout - tiempo máximo necesario para leer la respuesta del servidor proxy (por defecto 60)
fastcgi_* Tiempos de espera en NGINX
Al hablar de la configuración del servidor FastCGI, se pueden señalar varias categorías como:
- fastcgi_send_timeout - esta es una característica del marco de tiempo máximo para enviar peticiones del servidor FastCGI (por defecto 60)
- *_connect_timeout - esta es una característica del marco de tiempo máximo para la conexión al servidor (como regla por debajo de 75, por defecto 60)
- *_read_timeout - tiempo máximo para leer la respuesta del servidor (por defecto 60)
memcached_* Tiempos de espera en NGINX
Con memcached_* timeouts, las opciones son bastante similares a los ejemplos que ya hemos compartido en el artículo, por lo que son las siguientes:
- memcached_send_timeout - esta es la característica del marco de tiempo máximo para enviar la petición del servidor Memcached (60)
- *_connect_timeout - el marco de tiempo máximo para la conexión con el servidor (por regla general por debajo de 75, por defecto 60)
- *_read_timeout - el tiempo máximo para la lectura de la respuesta del servidor (por defecto 60)
Desactivación de los tiempos de espera comunes de NGINX
Cuando se examina en general este tema, se puede utilizar sin esfuerzo la lista de ajustes en el servidor o bloque http para desactivar los tiempos de espera comunes, vamos a revisar un par de los ejemplos básicos:
keepalive_timeout 1d
send_timeout 1d
client_body_timeout 1d
*_header_timeout 1d
proxy_send_timeout 1d
*_connect_timeout 1d
*_read_timeout 1d
fastcgi_read_timeout 1d
*_connect_timeout 1d
*_send_timeout 1d
memcached_read_timeout 1d
*_connect_timeout 1d
*_send_timeout 1d
Resumen
Por supuesto, con NGINX tienes una enorme variabilidad de alternativas con el uso de las cuales puedes ajustar varios tiempos de espera. Sin embargo, cuando se cambian los cruciales, puede influir significativamente en las características de rendimiento. Espero que este artículo haya sido útil para tu caso y que obtengas todos los conocimientos importantes sobre los Timeouts de NGINX.