TasksMax= в systemd: предел числа процессов и потоков
Задаёт предел числа процессов и потоков в контрольной группе службы. В отличие от LimitNPROC= считается на службу, а не на пользователя.
Что делает
Это предел, который защищает машину от расплодившихся процессов: служба с утечкой процессов упрётся в него и перестанет создавать новые, вместо того чтобы обрушить систему.
Значение по умолчанию задаётся параметром DefaultTasksMax= в system.conf и в дистрибутивах составляет 15% от предела процессов ядра. Для служб с большим пулом рабочих процессов этого может не хватать.
Где ставится. В секции [Service]. Также применим к срезам.
Значения
| Значение | Что происходит |
|---|---|
TasksMax=4096 | явное число задач. |
TasksMax=infinity | без ограничения — только для служб, которым это действительно нужно. |
TasksMax=10% | доля от системного предела процессов. |
Пример
Служба с большим пулом рабочих процессов.
[Service]
TasksMax=8192
TasksAccounting=yes
Текущее число задач видно в systemctl status строкой Tasks — там же рядом показан предел.
Типичные ошибки
Упор в предел выглядит как «resource temporarily unavailable» в журнале службы, а не как понятная ошибка.
Предел среза ограничивает все службы внутри: поднятие значения у службы не поможет, если исчерпан срез.
Потоки считаются наравне с процессами: многопоточная служба расходует предел быстрее, чем кажется.
Связанные ошибки
- Too many tasks: упор в предел TasksMaxСлужба не может создать новый процесс: достигнут предел TasksMax. Где он задан и как поднять правильно.
- Failed with result 'resources'Состояние resources: systemd не смог выделить ресурсы для запуска службы. Чем отличается от кодов 200-й группы и что проверять.
- status=220/SETSID в systemdКод 220/SETSID: systemd не смог создать новый сеанс процесса. Редкий код, чаще всего связан с окружением запуска.
Рядом стоящие параметры
Где важен на практике
Источники
- systemd.resource-control(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)