Dimensiona los sockets de proxy de NGINX antes de subir worker_connections
Una conexión proxificada suele ocupar un socket de cliente y otro de upstream; distingue el límite de conexiones del worker del límite de descriptores de archivo del servicio.
Una conexión proxificada de larga duración suele ocupar dos sockets: el del cliente y el del upstream. worker_connections cuenta ambos lados. Por eso, multiplicarlo por worker_processes no promete capacidad a los usuarios del proxy.
Cuando fallan las conexiones, sigue el límite indicado:
| Evidencia | Ajuste o estado del proceso que hay que inspeccionar |
|---|---|
| agotamiento de worker_connections | El presupuesto de conexiones del worker, incluidos los sockets de upstream |
| Mensaje del sistema operativo «Demasiados archivos abiertos» | El límite de descriptores de archivo que hereda el proceso real del servicio |
Los sockets de escucha, los registros y otros archivos abiertos también consumen descriptores. La reutilización de conexiones y la mezcla de tráfico cambian la relación entre usuarios y sockets.
worker_rlimit_nofile ajusta los límites del worker según los permisos del entorno. Una unidad de systemd puede fijar LimitNOFILE; el ulimit de un shell interactivo no cambia el servicio en ejecución.
Dimensiona los límites según la carga de trabajo e inspecciona quién los consume. Clientes inesperados o conexiones de upstream que fallan repetidamente pueden agotar un presupuesto antes suficiente. Un mayor número de procesos o un límite de memoria no reparan la falta de descriptores.