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

53300: too_many_connections

PostgreSQL

O que significa?

O servidor atingiu o número máximo de conexões concorrentes permitido por max_connections; novas conexões não podem ser aceitas.

Por que acontece?

Ausência de pool de conexões ou um pool mal dimensionado, vazamentos de conexões, aplicações abrindo muitas conexões de curta duração, ou max_connections definido abaixo da carga de trabalho.

Como resolver

Identifique as origens das conexões: SELECT usename, state, COUNT(*) FROM pg_stat_activity GROUP BY 1,2. Encerre de forma direcionada as conexões de cliente ociosas há muito tempo (o encerramento em massa sem filtro afeta todas as aplicações e pools): SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle' AND backend_type = 'client backend' AND usename = 'app_user' AND state_change < now() - interval '10 minutes' AND pid <> pg_backend_pid(). A correção real é um pool de conexões como o PgBouncer. Aumentar max_connections custa memória; prefira pooling. As conexões reservadas para superusuários mantêm o acesso administrativo disponível.

Abrir no DBAtlas →

Mais entradas deste banco