sysguard_mem

Директива `sysguard_mem` задаёт пороги, основанные на использовании памяти, для ограничения трафика по статистике использования памяти.

Синтаксисsysguard_mem {swapratio=percentage | free=value} [action=url];
По умолчаниюnone
Контекстhttp, server, location
Аргументы1-2

Описание

Директива sysguard_mem является частью модуля NGINX Sysguard, который предназначен для более эффективного управления ресурсами сервера путём применения контроля трафика на основе определённых условий по памяти. Эта директива может принимать один или два аргумента, задающие пороги использования памяти для мониторинга. Допустимые параметры включают swapratio, который указывает допустимый процент использования swap-памяти, и free, который определяет минимальный объём свободной физической памяти, требуемый прежде чем будут предприняты определённые действия. К этим условиям можно также привязать действие, позволяющее настраивать ответ, например возврат конкретного кода состояния при превышении порогов.

При использовании sysguard_mem, если указанное условие по памяти выполняется — либо процент использования swap-памяти превышает заданный swapratio, либо объём свободной памяти опускается ниже установленного free — NGINX выполняет назначенное действие, эффективно регулируя нагрузку на сервер. Эта возможность делает директиву незаменимой для предотвращения перегрузки сервера, особенно при большом трафике или при операциях, интенсивно использующих память. Таким образом, вы можете настроить несколько директив sysguard_mem для разных частей конфигурации — location или серверных блоков, чтобы применять адаптированное управление ресурсами в зависимости от контекста.

Кроме того, поведение директивы может быть изменено с помощью других директив, таких как sysguard и sysguard_mode, что позволяет реализовать сложную логику принятия решений на основе комбинированных условий и повышает устойчивость конфигураций сервера к исчерпанию ресурсов.

Пример конфига

location /api {
    sysguard on;
    sysguard_mem swapratio=20% action=/swaplimit;
    sysguard_mem free=100M action=/freelimit;
}

Убедитесь, что установленные вами пороги достижимы с учётом возможностей сервера; в противном случае действия могут срабатывать слишком часто.

Будьте осторожны с указанным действием; его неправильная настройка может привести к ненужной выдаче ошибок пользователям.

Помните, что только одно action может быть связано с каждой директивой sysguard_mem, если заданы оба параметра. Каждая директива должна быть отдельной, если требуется несколько действий.

← Ко всем директивам