DBAtlas · Атлас эксплуатации баз данных

53300: too_many_connections

PostgreSQL

Что это значит?

Сервер достиг максимального числа одновременных подключений, допускаемого max_connections; новые подключения не принимаются.

Почему возникает?

Отсутствие пула подключений или его неверный размер, утечки подключений, приложения, открывающие множество кратковременных подключений, или max_connections ниже потребностей нагрузки.

Как исправить

Определите источники подключений: SELECT usename, state, COUNT(*) FROM pg_stat_activity GROUP BY 1,2. Завершайте давно простаивающие клиентские подключения адресно (массовое завершение без фильтра затрагивает все приложения и пулы): 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(). Настоящее решение — пул подключений, например PgBouncer. Увеличение max_connections требует памяти; предпочитайте пулинг. Подключения, зарезервированные для суперпользователей, сохраняют возможность административного доступа.

Открыть в DBAtlas →

Ещё по этой СУБД