psql_resources_consumption_limits. Контроль потребления ресурсов
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Контроль потребления ресурсов БД (оперативная память и ЦП) - функциональность, которая реализована в виде расширения psql_resources_consumption_limits
, позволяет ограничивать потребление ресурсов: оперативной памяти и ЦПУ, с помощью процессов СУБД. Входит в состав поставки Enterprise.
Внимание!
Процессы расширений ограничены в соответствии с установленными лимитами (включая задания
pg_cron
и т.п.).
В Pangolin поддерживается:
- функциональность фиксированного задания ограничений ресурсов для процессов сессий СУБД;
- завершение с ошибкой сессии, превысившей ограничение на потребление ресурса, и всех ее подпроцессов;
- обнаружение превышения квоты на ресурсы асинхронно.
Примечание:
Управление ограничениями на уровне отдельной сессии не поддерживается.
Подробнее с функциональностью «Контроль потребления ресурсов БД» можно ознакомит ься в одноименном разделе документа «Руководство администратора».
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
Для установки расширения и включения функциональности контроля потребления ресурсов выполните шаги:
-
Добавьте имя библиотеки расширения в параметр
shared_preload_libraries
конфигурационного файлаpostgresql.conf/postgres.yml
:shared_preload_libraries = 'psql_resources_consumption_limits'
-
Перечитайте конфигурацию и перезагрузите кластер:
pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload clustername
pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml restart clustername -
Выполните команду по добавлению расширения (для создания представления мониторинга):
CREATE EXTENSION psql_resources_consumption_limits;
Примечание:
Необходимо учесть увеличение
background worker
на единицу, и увеличить лимитbackground worker
.
Отключение функциональности
Для отключения функциональности:
-
Выполните команду по удалению расширения:
DROP EXTENSION psql_resources_consumption_limits;
-
Удалите имя библиотеки расширения из параметра
shared_preload_libraries
конфигурационного файлаpostgresql.conf/postgres.yml
:shared_preload_libraries = 'psql_resources_consumption_limits'
-
Перезагрузите кластер:
restart --force && reload --force
Примечание:
Если требуется временное отключение функциональности для всех ролей, без удаления расширения, то это возможно сделать, установив параметр
psql_resources_consumption_limits.check_interval
в нулевое значение.
Настройка
Настройка фиксированных ограничений функциональности задается параметрами, перед каждым параметром указывается имя расширения через точку.
Пример:
psql_resources_consumption_limits.check_interval
-
mem_limit
- ограничение на суммарное потребление оперативной памяти одной сессией;Задается в килобайтах kB (kilobytes), мегабайтах MB (megabytes), гигабайтах GB (gigabytes), терабайтах TB (terabytes), без указания единиц — килобайты.
Допускаются только положительные целочисленные значения. При указании отрицательного значения или лимита, превышающего физическую память КТС (параметр
MemTotal
в файле/proc/meminfo
), Pangolin не запускается с выводом ошибки о недопустимом значении или превышении лимита. Если задано нулевое значение, то контроль за потреблением оперативной памяти отключен. По умолчанию лимит равен нулю (контроль отключен). -
cpu_limit
- ограничение на процент потребления ядер CPU всеми процессами одной сесси и;Задается в процентах.
Допускаются положительные целочисленные значения. При указании отрицательного значения или лимита превышающего количество ядер CPU КТС, умноженных на 100, Pangolin не запускается с выводом ошибки о невалидном значении или превышении лимита. Если задано нулевое значение, то контроль за потреблением CPU отключен. По умолчанию лимит равен нулю (контроль отключен).
Допускаются значения больше 100, например, 350, что означает: «потребление CPU всеми процессами сессии не может превысить 3.5 ядер"».
-
mem_exceeding_reaction
- реакция на превышение лимита потребления оперативной памяти:terminate
(значение по умолчанию) - прерывание всех процессов сессии с выводом сообщения в лог;alert
- вывод сообщения в лог о превышении лимита;
-
cpu_exceeding_reaction
- реакция на превышение лимита потребления CPU:terminate
(значение по умолчанию) - прерывание всех процессов сессии с выводом сообщения в лог;alert
- вывод сообщения в лог о превышении лимита;
-
alert_log_level
- уровень лога для реакций alert на превышения лимитов. Принимает знач ения:debug5
;debug4
;debug3
;debug2
;debug1
;debug
;info
;notice
;log
;warning
(значение по умолчанию);
Примечание:
При установке
mem_exceeding_reaction
,cpu_exceeding_reaction
иalert_log_level
в значения, отличные от допустимых, выводится предупреждение о невалидности параметра, и используется значение по умолчанию.
-
alert_timeout
- время ожидания для повторного вывода сообщения в лог (задается в единицах времени);Отрицательные значения не допускаются, максимальное значение - 1 час. Если процесс продолжает выполняться после превышения лимита (реакция на превышение лимита - вывод сообщения в лог), то следующее сообщение о его превышении появится не раньше, чем через установленный тайм-аут. Если установлено нулевое значение, то сообщения выводятся на каждое превышение лимита. Значение по умолчанию - 1 секунда. При указании отрицательного значения или значения, превышающего 1 час, выводится предупреждение о невалидном параметре и используется значение по умолчанию.
-
check_interval
- интервал контроля превышения.Задается во временных единицах. Отрицательные значения не допускаются, максимальное значение – 5 минут. Если задано нулевое значение, то контроль за потреблением оперативной памяти и CPU отключен. Значение по умолчанию – 30 с. Если задано значение отличное от нуля и включен контроль хотя бы за одним из ресурсов, то процесс будет периодически запускаться с заданным интервалом времени и проверять превышение лимитов.
Параметры можно изменять без перезапуска сервера.
Установка параметров для роли
Параметры (кроме интервала контроля) могут быть заданы суперпользователем отдельно для каждой роли через ALTER ROLE ... SET name=value;
. В этом случае реакция на их превышение и лимиты сессий в рамках данной роли будут проверяться с учетом этих параметров. Как и при определении соответствующих параметров в конфигурации сервера, ограничение будет применяться к каждой из сессий по отдельности. В каждой из сессий значение параметра для роли переопределяет общее значение. Контроль суммарного потребления ресурсов всеми пользовательскими сессиями не выполняется.
Использование модуля
Примеры использования представлены для конфигурации standalone-patroni-pgbouncer
.