DBAtlas · Atlas de operações de banco de dados

Connection storm (conexões demais)

Você recebeu 'too many connections', 'remaining connection slots reserved' ou ORA-00018; novas conexões estão sendo rejeitadas. Encontre a origem, alivie a pressão agora e corrija de vez.

Meça a situação: quantas conexões, e quantas estão ativas?

Primeiro olhe o total de conexões, o limite e a divisão entre ativas/ociosas.

SELECT status, COUNT(*) FROM v$session WHERE type='USER' GROUP BY status;
SELECT name, value FROM v$parameter WHERE name IN ('processes','sessions');
  • A maioria das conexões está idle / idle in transaction
  • A maioria está ativa; preciso encontrar a origem

Quem/de onde? Agrupe as conexões por origem

Geralmente o pool de um único servidor de aplicação estourou ou há um vazamento de conexões. Olhe a distribuição por host/usuário/aplicação.

SELECT client_addr, usename, application_name, count(*) FROM pg_stat_activity GROUP BY 1,2,3 ORDER BY 4 DESC;
  • Uma única aplicação/host estourou as conexões (pool)
  • A carga realmente aumentou; todas são legítimas e ativas

Causa raiz: acúmulo de conexões ociosas / vazamento

As conexões são abertas e nunca fechadas, ou ficam 'idle in transaction'; elas ocupam slots à toa.

Causa raiz: o pool da aplicação estourou

O pool de conexões de um servidor de aplicação está ilimitado/grande demais ou vazando. É ele que está gerando as conexões.

Causa raiz: aumento real de carga

As conexões são legítimas e ativas; a capacidade realmente é insuficiente.

Abrir no DBAtlas →