Автоматическое завершение неактивных соединений
Описание
Соединения, остающиеся неактивными определенное время, подлежат принудительному завершению. Для завершения таких соединений используется добавленный фоновый процесс «idle sessions terminator», осуществляющий мониторинг и завершение бездействующих клиентских сеансов. Этот процесс запускается при старте сервера СУБД Pangolin и завершается вместе с остановкой сервера.
Настройка
Для активации фонового процесса мониторинга и прерывания бездействующих клиентских соединений необходимо задать конфигурационные параметры указанные в разделе далее.
Если хотя бы один из этих параметров равен нулю, неактивные соединения завершаться не будут – поведение по умолчанию.
Параметры хранятся в различных файлах:
- для standalone-конфигурации — в файле
postgresql.conf; - для кластерной конфигурации — в файле
postgres.yml.
Для применения данных параметров требуется перечитать конфигурацию.
Конфигурационные параметры
Параметр | Тип данных | Значение по умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
|
|
| [ | Интервал мониторинга в миллисекундах |
|
|
| [ | Допустимое время бездействия в секундах |
Интервал мониторинга (в миллисекундах) должен быть минимум в два раза меньше интервала допустимого времени бездействия (в секундах).
Сценарии использования
Соединения, бездействующие более заданного времени, закрываются автоматически
-
Задайте конфигурационные параметры для активации функциональности:
check_idle_time_delay = 1000
backend_idle_alive_time = 10Для применения перечитайте конфигурацию:
SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)В системе появился процесс:
2611 ? Ss 0:00 postgres: clustername: idle sessions terminator -
Откройте несколько соединений к СУБД от разных пользователей.
-
Подождите половину заданного времени бездействия, затем откройте еще несколько соединений.
-
После завершения второй половины времени бездействия проверьте, какие соединения остались открыты:
$ ps ax | grep postgresОжидаемый результат: Неактивные процессы запущенные через
10+1секунд (так какbackend_idle_alive_time– 10 секунд) удалены. Оставшиеся открытые соединения бездействуют меньше заданного времени.