DBAtlas · Atlas de operaciones de bases de datos

Connection storm (demasiadas conexiones)

Ha recibido 'too many connections', 'remaining connection slots reserved' u ORA-00018; se están rechazando conexiones nuevas. Encuentre el origen, alivie la presión ahora y corríjalo definitivamente.

Mida la situación: ¿cuántas conexiones hay y cuántas están activas?

Mire primero el total de conexiones, el límite y el reparto activas/inactivas.

SELECT status, COUNT(*) FROM v$session WHERE type='USER' GROUP BY status;
SELECT name, value FROM v$parameter WHERE name IN ('processes','sessions');
  • La mayoría de las conexiones están idle / idle in transaction
  • La mayoría están activas; necesito encontrar el origen

¿Quién/desde dónde? Agrupe las conexiones por origen

Normalmente el pool de un único servidor de aplicaciones se ha disparado o hay una fuga de conexiones. Mire la distribución por host/usuario/aplicación.

SELECT client_addr, usename, application_name, count(*) FROM pg_stat_activity GROUP BY 1,2,3 ORDER BY 4 DESC;
  • Una sola aplicación/host ha disparado las conexiones (pool)
  • La carga ha aumentado de verdad; todas son legítimas y están activas

Causa raíz: acumulación de conexiones inactivas / fuga

Las conexiones se abren y nunca se cierran, o se dejan 'idle in transaction'; ocupan slots para nada.

Causa raíz: el pool de la aplicación se ha disparado

El pool de conexiones de un servidor de aplicaciones no tiene límite, es demasiado grande o tiene fugas. Es el que genera las conexiones.

Causa raíz: aumento real de la carga

Las conexiones son legítimas y están activas; la capacidad es realmente insuficiente.

Abrir en DBAtlas →