Шторм подключений (слишком много соединений)
Вы получили 'too many connections', 'remaining connection slots reserved' или ORA-00018; новые соединения отклоняются. Найдите источник, снимите давление сейчас, устраните окончательно.
Оцените ситуацию: сколько соединений и сколько из них активны?
Сначала посмотрите на общее число соединений, лимит и соотношение активных/простаивающих.
SELECT status, COUNT(*) FROM v$session WHERE type='USER' GROUP BY status;
SELECT name, value FROM v$parameter WHERE name IN ('processes','sessions');- Большинство соединений idle / idle in transaction
- Большинство активны; нужно найти источник
Кто/откуда? Сгруппируйте соединения по источнику
Обычно раздулся пул одного сервера приложений или есть утечка соединений. Посмотрите на распределение по хосту/пользователю/приложению.
SELECT client_addr, usename, application_name, count(*) FROM pg_stat_activity GROUP BY 1,2,3 ORDER BY 4 DESC;- Соединения раздуло одно приложение/хост (пул)
- Нагрузка действительно выросла; все соединения легитимны и активны
Первопричина: скопление простаивающих соединений / утечка
Соединения открываются и никогда не закрываются или остаются в 'idle in transaction'; они впустую занимают слоты.
Первопричина: раздулся пул приложения
Пул соединений сервера приложений не ограничен/слишком велик или течёт. Именно он порождает соединения.
Первопричина: реальный рост нагрузки
Соединения легитимны и активны; ёмкости действительно не хватает.