Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Cómo Detectar y Optimizar las Conexiones en Tiempo Real en Nginx

Loading

Ver conexiones activas en tiempo real (stub_status)

Si tienes stub_status habilitado:

curl http://127.0.0.1/nginx_status

Salida típica:

Active connections: 512
server accepts handled requests
 102345 102345 203456
Reading: 10 Writing: 200 Waiting: 302

Qué mirar aquí

  • Active connections → conexiones totales actuales
  • Reading/Writing/Waiting:
    • Writing alto = backend lento o clientes lentos
    • Waiting alto = keepalive reteniendo conexiones

Si Active connections ≈ límite configurado → estás al borde

Ver límite real de conexiones de Nginx

a) Worker connections

nginx -T | grep worker_connections

Ejemplo:

worker_connections 1024;

b) Workers activos

nginx -T | grep worker_processes

Ejemplo:

worker_processes auto;

Conexiones máximas teóricas

worker_processes × worker_connections

Ejemplo:

4 workers × 1024 = 4096 conexiones

OJO: no todas son para clientes
También cuentan:

  • Conexiones a upstreams
  • Conexiones keepalive
  • Proxy_pass

Ver errores claros de saturación

Busca esto en logs:

grep -i "worker_connections" /var/log/nginx/error.log

Mensajes típicos:

[error] 1024#1024: *12345 worker_connections are not enough

Esto confirma que Nginx ha llegado al límite

Ver conexiones TCP reales del sistema

ss -s

O solo Nginx:

ss -ant | grep :80 | wc -l
ss -ant | grep :443 | wc -l

Estados importantes:

  • ESTAB → conexiones activas
  • SYN_RECV alto → posible saturación o ataque
  • TIME_WAIT alto → tuning TCP pendiente

Comprobar límites del sistema (MUY IMPORTANTE)

Aunque Nginx esté bien configurado, Linux puede limitarlo.

a) File descriptors

ulimit -n

Nginx necesita al menos:

worker_processes × worker_connections × 2

b) Ver límite real del proceso

cat /proc/$(pidof nginx | awk '{print $1}')/limits

Busca:

Max open files

Síntomas claros de que Nginx está al límite

  • Respuestas 503 / 504
  • Latencia alta sin CPU alta
  • Logs con:
    • worker_connections are not enough
    • connect() failed (24: Too many open files)
  • Muchas conexiones en Waiting
  • SYN_RECV creciendo

Comprobación rápida (checklist express)

# Conexiones activas
curl localhost/nginx_status

# Límites
nginx -T | grep worker_connections
ulimit -n

# Errores
grep -i "not enough" /var/log/nginx/error.log

¿Qué se suele hacer si está al límite?

  • Aumentar:
    • worker_connections
    • worker_rlimit_nofile
    • ulimit -n
  • Reducir:
    • keepalive_timeout
  • Activar:
    • Cache (si no usas proxy cache)
    • HTTP/2 o HTTP/3
  • Revisar backend (Apache / PHP-FPM)

You may also like...