53300: too_many_connections
PostgreSQL¿Qué significa?
El servidor alcanzó el número máximo de conexiones concurrentes permitido por max_connections; no se pueden aceptar conexiones nuevas.
¿Por qué ocurre?
Ausencia de pool de conexiones o uno mal dimensionado, fugas de conexiones, aplicaciones que abren muchas conexiones de corta duración o max_connections configurado por debajo de la carga de trabajo.
Cómo solucionarlo
Identifique los orígenes de las conexiones: SELECT usename, state, COUNT(*) FROM pg_stat_activity GROUP BY 1,2. Termine de forma selectiva las conexiones de cliente inactivas durante mucho tiempo (una terminación masiva sin filtro afecta a todas las aplicaciones y 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(). La solución real es un pool de conexiones como PgBouncer. Aumentar max_connections consume memoria; prefiera el pooling. Las conexiones reservadas para superusuarios mantienen disponible el acceso administrativo.