# (Plesk для Linux) Cgroups Manager

Содержание

A website on a shared hosting can consume all system resources and disrupt the performance of other websites. This issue is known as the «noisy neighbor problem». Plesk Cgroups Manager is an extension that helps you address this issue by managing the consumption of the CPU, RAM, and disk read and write bandwidth by customers.

In this topic, you will learn how to install and configure the Plesk Cgroups Manager extension, and also how to use it to monitor and control resource consumption by customers.

Note: This issue only affects Plesk servers used for shared hosting. If you are running a Plesk Web Admin server, this topic is unlikely to be of interest to you.

Для каждого из системных ресурсов Cgroups Manager позволяет:

- Установить максимальное значение (ограничение) для ресурса.

- Наблюдать за потреблением ресурса и отправлять по электронной почте уведомления, когда оно превышает некоторый уровень (порог).

Вы можете настроить Cgroups Manager и установить ограничение на потребление ресурса на следующих уровнях:

- Для тарифного плана, затрагивая все привязанные к нему подписки.

- Для отдельной подписки.

## Требования

### Лицензия Plesk

Cgroups manager доступен в следующих изданиях Plesk:

- Plesk Web Pro

- Plesk Web Host

Если вы используете издание Web Admin и хотите управлять использованием ресурсов на сайтах, вы можете обновить ваше издание до Web Pro и распределить сайты между несколькими подписками.

### Ограничения

- Cgroups Manager не может ограничить потребление ресурсов расширениями Plesk и персональными службами, установленными вручную. Это утверждение относится ко всем расширениям Plesk: LiteSpeed ― не исключение.

- Cgroups Manager в контейнере Virtuozzo 7 позволяет управлять потреблением памяти и процессора, но не позволяет управлять потреблением ввода-вывода диска. Для Cgroups Manager на виртуальной машине Virtuozzo это ограничение не действует. Чтобы использовать Cgroups Manager без этого ограничения, перенесите Plesk из контейнера Virtuozzo 7 на другую ОС.

## Установка

Чтобы включить Cgroups Manager:

1. Установите компонент Resource Controller (Cgroups) с помощью установщика Plesk:

   1. Go to Tools & Settings > Updates (under «Plesk») > Add/Remove Components.

   2. Выберите «Resource Controller (Cgroups)» и нажмите Продолжить.

      Примечание

      Если необходимый компонент отсутствует в списке доступных компонентов, убедитесь, что ваша система отвечает требованиям.

2. Запустите компонент:

   1. Перейдите в раздел Инструменты и настройки

   2. Click Services Management (under «Server Management»)

   3. Start the «Resource Controller (Cgroups)» service.

## Настройка Cgroups Manager

Осторожно

Неправильная конфигурация Cgroups Manager может замедлить работу сайтов или даже сделать их недоступными. Пожалуйста, убедитесь, что вы прочитали и поняли инструкции из этого раздела перед тем, как вносить какие-либо изменения.

Вы можете настроить Cgroups Manager на следующих уровнях:

- Для тарифного плана, затрагивая все привязанные к нему подписки.

- Для отдельной подписки.

Настройки на уровне подписки имеют более высокий приоритет, чем настройки на уровне тарифного плана. Дополнительные планы не могут быть использованы для изменения настроек Cgroups Manager.

После установки и запуска службы становятся доступны следующие инструменты настройки:

Инструмент | Тарифный план | Подписка
--- | --- | ---
Панель Plesk (в режиме Service Provider) | Перейдите на страницу Тарифные планы. Нажмите имя тарифного плана, для которого вы хотите сконфигурировать Cgroups Manager. Откройте вкладку «Память, процессор, ввод-вывод диска». | Перейдите в раздел Подписки. Нажмите имя подписки, для которой вы хотите сконфигурировать Cgroups Manager. Нажмите Настроить > откройте вкладку «Память, процессор, ввод-вывод диска».
Plesk CLI | Используйте опции `-cgroups*` утилиты service_plan. | Используйте опции `-cgroups*` утилиты subscription_settings.
Plesk XML API | Смотрите раздел документации Managing Service Plans. | Смотрите раздел документации Managing Subscriptions.

## Ограничение потребления ресурсов

### Установка ограничений

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

Подписки могут делить между собой настройки ограничений, но у каждой из них есть свое ограничение.

Если ресурс ограничен для данной подписки:

- Cgroups Manager следит за всеми процессами, запущенными системным пользователем подписки. Все эти процессы в совокупности не могут превысить ограничение по использованию каждого ресурса.

- Если подписка достигает ограничения, операционная система выполняет некоторое действие в зависимости от типа ресурса.

- Подписка не может превышать ограничение, даже если на сервере имеются свободные ресурсы соответствующего типа (незанятые циклы процессора, свободная память и т.д.).

Если ресурс не ограничен для данной подписки:

- Процессы подписки могут использовать этот ресурс в доступном количестве.

- Ресурс делится между процессами подписки:

  - Процессорное время и пропускная способность чтения с диска и записи на диск делятся почти поровну.

  - Память делится в зависимости от потребности процессов.

В обоих случаях нельзя гарантировать, что подписка получит какое-либо минимальное доступное количество ресурса.

### Допустимые значения настроек для ограничений

Настройки ограничений могут принимать следующие значения:

Настройка | Единица измерения | Допустимые значения
--- | --- | ---
Ограничение на использование процессора | Процент используемого процессорного времени, где 100% – это полное использование ядра процессора | Не более, чем 100% * Число ядер процессора
Ограничение на использование памяти | Байт | Не менее 1МБ
Скорость ввода (записи) на диск | Байт в секунду | Не менее 1МБ в секунду
Скорость вывода (чтения) с диска | Байт в секунду | Не менее 1МБ в секунду

If the server has multiple CPU cores, the available CPU amount is equal to 100% * the number of CPU cores. For example, if your server has two CPU cores, the available CPU amount is 200%.

### Как система управляет потреблением ресурсов

Когда процессы отдельной подписки используют максимально допустимое количество того или иного ресурса, операционная система выполняет некоторые действия в зависимости от типа ресурса.

Перерасход ресурса | Действия | Последствия
--- | --- | ---
Процессор, чтение с диска и запись на диск | Система не позволяет процессам этой подписки использовать количество ресурса, превышающее ограничение. | Соответствующие сайты могут начать работать медленнее, и их время отклика может увеличиться.
Память | Когда процессы отдельной подписки достигают ограничения по использованию памяти, система уничтожает процесс, потребляющий наибольший объем памяти. | Соответствующий сайт может некоторое время быть недоступен и отвечать на HTTP-запросы с кодами ответа 5xx (ошибка сервера).

## Наблюдение за использованием ресурсов и уведомления о нем

### Настройка наблюдения и уведомлений

Если вы установили ограничение на использование ресурса, вы можете также настроить в Plesk наблюдение за использованием этого ресурса.

Чтобы включить наблюдение, установите следующие значения:

- Порог («Уведомить при превышении» в пользовательском интерфейсе Plesk).

- Период

Чтобы выключить наблюдение, удалите соответствующее значение порога.

### Допустимые значения настроек наблюдения

Настройки наблюдения могут принимать следующие значения:

Настройка | Единица измерения | Допустимые значения
--- | --- | ---
Ограничение на использование процессора | Процент используемого процессорного времени, где 100% – это полное использование ядра процессора | Не более, чем ограничение на использование процессора
Ограничение на использование памяти | Байт | Не менее 1МБ и не более, чем ограничение на использование памяти
Скорость ввода (записи) на диск | Байт в секунду | Не менее 1МБ в секунду и не более, чем ограничение на скорость записи на диск
Скорость вывода (чтения) с диска | Байт в секунду | Не менее 1МБ в секунду и не более, чем ограничение на скорость чтения с диска
Период проверки (для любого ресурса) | Секунда | 300 (5 минут), 3600 (1 час) или 86400 (24 часа)

### Как система производит наблюдение

Когда вы включаете наблюдение для одного или более ресурсов, Cgroups Manager начинает наблюдать за их использованием. Если вы включили наблюдение за ресурсами на уровне подписки, будет вестись наблюдение за использованием ресурсов для этой подписки. Если вы включили наблюдение за ресурсами на уровне тарифного плана, будет вестись наблюдение за использованием ресурсов для всех подписок, связанных с этим тарифным планом:

1. Каждые пять минут Cgroups Manager считает средний расход ресурсов для подписки и отмечает случаи, когда он достигает `порога` или превышает его.

2. В течение каждого `периода` Cgroups Manager проверяет, сколько раз для подписки было превышено значение `порога` за последний `период` времени.

   - Если для подписки `порог` был превышен во всех интервалах `периода`, Cgroups Manager отправляет уведомление по электронной почте.

   - Если это происходит в течение более чем одного `периода`, дополнительные уведомления не отправляются.

### Пример наблюдения

Этот пример поможет вам лучше понять, как Cgroups Manager производит наблюдение и инициирует отправку уведомлений.

Рассмотрим тарифный план P со следующими настройками:

Настройка | Значение
--- | ---
Ограничение на использование процессора | 200%
Порог использования процессора | 160%
Период проверки для процессора | 1 час

Как говорилось выше, 100% означает, что ядро процессора полностью загружено.

К тарифному плану привязано две подписки: A и B.

В подписке A есть задача, интенсивно использующая процессор, которая выполняется каждый час, и её выполнение занимает около 10 минут. В течение этих 10 минут процессы подписки потребляют более 160% процессорного времени. В остальное время подписка потребляет менее 160% процессорного времени. Для уведомлений не имеет значения, достигает ли она ограничения.

Сайт в подписке B находится под высокой нагрузкой. Процессы этой подписки всегда потребляют более 160% процессорного времени.

Cgroups Manager считает средний расход ресурсов каждые 5 минут. По прошествии одного часа у него есть следующие результаты:

- Подписка A превысила порог в двух интервалах из 12. Cgroups Manager не станет отправлять уведомление.

- Подписка B превысила порог во всех 12 интервалах. Cgroups Manager отправит уведомление, но не станет повторять его в случае, если высокая нагрузка на сайт продолжится.

### Получатели и текст уведомлений

Чтобы выбрать, кому будут отправлены уведомления:

1. Перейдите на страницу Инструменты и настройки > Уведомления (в разделе «Plesk»).

2. Выберите получателей напротив пункта Память, процессор, ввод-вывод диска (Cgroups).

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

1. Перейдите на страницу Инструменты и настройки > Уведомления (в разделе «Plesk»).

2. Нажмите крайнюю кнопку справа напротив пункта Память, процессор, ввод-вывод диска (Cgroups).

Более подробную информацию можно найти в главе документации об автоматических почтовых уведомлениях.

## Интеграция Cgroups Manager с расширением Monitoring

Вы можете интегрировать Cgroups Manager с расширением Monitoring. Это позволяет клиентам видеть, сколько ресурсов потребляют их подписки, а также позволяет администратору Plesk видеть и сравнивать использование ресурсов между десятью подписками.

Узнайте, как интегрировать Cgroups Manager с расширением Monitoring.

## Ограничения

Некоторые технические и коммерческие проблемы не могут быть решены с помощью управления ресурсами:

- Клиенты, которые превысили расход ресурсов раньше, скорее всего, будут испытывать проблемы с производительностью сайтов.

- Cgroups Manager не подсчитывает и не ограничивает ресурсы для веб-приложений Ruby, Python и Node.js, которые используют Phusion Passenger.

## Отключение Cgroups Manager

Чтобы отключить функциональность Cgroups Manager, добавьте следующие строки в файл panel.ini:

    [resourceController]
    enabled = false