psql_resources_consumption_limits. Контроль потребления ресурсов#
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext.
Контроль потребления ресурсов БД (оперативная память и CPU) – функциональность, которая реализована в виде расширения psql_resources_consumption_limits, позволяет ограничивать потребление оперативной памяти и процессорного времени процессами СУБД.
Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.
Внимание
Процессы расширений ограничены в соответствии с установленными лимитами (включая задания pg_cron и так далее).
В СУБД Pangolin поддерживается:
функциональность фиксированного задания ограничений ресурсов для процессов сессий СУБД;
завершение с ошибкой сессии, превысившей ограничение на потребление ресурса, и всех ее подпроцессов;
обнаружение превышения квоты на ресурсы асинхронно.
Примечание
Управление ограничениями на уровне отдельной сессии не поддерживается.
Подробнее с функциональностью «Контроль потребления ресурсов БД» можно ознакомиться в подразделе «Контроль потребления СУБД вычислительных ресурсов» раздела «Диагностика и планирование» документа «Администрирование функциональностей».
Объекты#
Параметры конфигурирования расширения#
В рамках реализации функциональности были добавлены параметры:
Параметр |
Значение по умолчанию |
Описание |
|---|---|---|
|
|
Ограничение на суммарное потребление оперативной памяти одной сессией. Задается в килобайтах kB (kilobytes), мегабайтах MB (megabytes), гигабайтах GB (gigabytes), терабайтах TB (terabytes), без указания единиц — килобайты. Допускаются только положительные целочисленные значения. При указании отрицательного значения или лимита, превышающего физическую память КТС (параметр |
|
|
Ограничение на процент потребления ядер CPU всеми процессами одной сессии, задается в процентах. Допускаются положительные целочисленные значения. При указании отрицательного значения или лимита превышающего количество ядер CPU КТС, умноженных на 100, СУБД Pangolin не запускается с выводом ошибки о невалидном значении или превышении лимита. Если задано нулевое значение, то контроль за потреблением CPU отключен. По умолчанию лимит равен нулю (контроль отключен). Допускаются значения больше 100, например, 350, что означает – «потребление CPU всеми процессами сессии не может превысить 3.5 ядер». |
|
|
Реакция на превышение лимита потребления оперативной памяти:
|
|
|
Реакция на превышение лимита потребления CPU:
|
|
|
Уровень лога для реакций
|
|
|
Время ожидания для повторного вывода сообщения в лог (задается в единицах времени). Отрицательные значения не допускаются, максимальное значение - 1 час. Если процесс продолжает выполняться после превышения лимита (реакция на превышение лимита – вывод сообщения в лог), то следующее сообщение о его превышении появится не раньше, чем через установленный тайм-аут. Если установлено нулевое значение, то сообщения выводятся на каждое превышение лимита. Значение по умолчанию - 1 секунда. При указании отрицательного значения или значения, превышающего 1 час, выводится предупреждение о невалидном параметре и используется значение по умолчанию. |
|
|
Интервал контроля превышения. Задается во временных единицах. Отрицательные значения не допускаются, максимальное значение – 5 минут. Значение по умолчанию – 30 с. Если задано нулевое значение, то контроль за потреблением оперативной памяти и CPU отключен. Если задано значение, отличное от нуля, и включен контроль хотя бы за одним из ресурсов, то процесс будет периодически запускаться с заданным интервалом времени и проверять превышение лимитов. |
Примечание
При установке psql_resources_consumption_limits.mem_exceeding_reaction, psql_resources_consumption_limits.cpu_exceeding_reaction и psql_resources_consumption_limits.alert_log_level в значения, отличные от допустимых, выводится предупреждение о невалидности параметра, и используется значение по умолчанию.
Параметры можно изменять без перезапуска сервера.
Представления#
Данные о потреблении ресурсов процессами отображаются в новом представлении psql_resources_consumption_limits.consumption. Права доступа pg_read_all_stats.
Представление содержит поля:
Имя столбца |
Тип |
Описание |
|---|---|---|
|
|
Идентификатор сессии |
|
|
Идентификатор процесса |
|
|
Идентификатор роли |
|
|
Имя роли |
|
|
Уровень лога для сообщений о превышении лимитов |
|
|
Текущее потребление памяти процессом |
|
|
Текущее потребление памяти сессией |
|
|
Максимальное потребление памяти процессом за все время контроля |
|
|
Максимальное потребление памяти сессией за все время контроля |
|
|
Заданное для сессии ограничение по памяти |
|
|
Заданная для сессии реакция на превышение ограничения по памяти |
|
|
Текущее потребление CPU процессом |
|
|
Текущее потребление CPU сессией |
|
|
Максимальное потребление CPU процессом за все время контроля |
|
|
Максимальное потребление CPU сессией за все время контроля |
|
|
Заданное для сессии ограничение по CPU |
|
|
Заданная для сессии реакция на превышение ограничения по CPU |
Доработка#
Доработка не проводилась.
Ограничения#
Ограничения отсутствуют.
Установка#
Для установки расширения и включения функциональности контроля потребления ресурсов выполните шаги:
Добавьте имя библиотеки расширения в параметр
shared_preload_librariesконфигурационного файлаpostgresql.conf/postgres.yml:shared_preload_libraries = 'psql_resources_consumption_limits'Перечитайте конфигурацию и перезагрузите СУБД, в случае кластерной конфигурации:
конфигурация cluster:
pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload clustername pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml restart clusternamestandalone конфигурация:
pg_ctl restart
Выполните команду по добавлению расширения (для создания представления мониторинга):
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) могут быть заданы суперпользователем отдельно для каждой роли через ALTER ROLE ... SET name=value;. В этом случае реакция на их превышение и лимиты сессий в рамках данной роли будут проверяться с учетом этих параметров.
Как и при определении соответствующих параметров в конфигурации сервера, ограничение будет применяться к каждой из сессий по отдельности. В каждой из сессий значение параметра для роли переопределяет общее значение. Контроль суммарного потребления ресурсов всеми пользовательскими сессиями не выполняется.
Использование расширения#
С примерами использования расширения можно ознакомиться в подразделе «Сценарии использования» раздела «Контроль потребления СУБД вычислительных ресурсов» документа «Администрирование функциональностей».