Здесь мы разберём лимиты, накладываемые системой SystemD, а для настройки этих лимитов будем править конфиг system.conf и файлы юнитов SystemD.
Введение
Мы уже рассмотрели, как настроить ограничения на общее количество открытых файлов и открытых файлов для процесса. Эти ограничения накладывается ядром и настраивается с помощью конфига sysclt.conf.
Также, рассмотрели ограничения накладываемые подсистемой PAM, которые накладываются на сеанс пользователя.
А теперь рассмотрим, какие лимиты можно задать с помощью системы инициализации SystemD.
В операционных системах с системой инициализации SystemD существует специальный конфиг — /etc/systemd/system.conf. С помощью этого конфига можно настроить ограничения по умолчанию для служб. Но также, ограничения можно задавать в самих файлах юнитов, в секции [Service].
Почитать документацию про system.conf можно здесь, или выполните команду man systemd-system.conf
. А вообще, файл system.conf — это основной конфигурационный файл для SystemD.
Возможные ограничения
Когда вы создаёте свой юнит SystemD типа service, то есть службу, то вы можете в секции [Service] задать некоторые ограничения для этой службы. Про такие юниты я писал здесь. Или вы можете ограничить все службы указав общее ограничение в файле system.conf. При этом ограничение в самом юните приоритетнее, чем общее ограничение.
Рассмотрим некоторые из ограничений в таблице ниже.
Описание параметра | Параметр в файле юнита | Параметр в файле system.conf |
Ограничение в секундах на количество процессорного времени, которое может потреблять процесс. Когда процесс достигает предела, он завершается. | LimitCPU=<секунд> | DefaultLimitCPU=<секунд> |
Максимальный размер файлов, которые может создать процесс. При попытке создать файл большего размера процесс либо завершится, либо обработает ошибку и продолжит работать. | LimitFSIZE=<байт> | DefaultLimitFSIZE=<байт> |
Максимальный размер файла дампа в байтах, который процесс может сохранить. При значении 0 файлы дампа не создаются. Когда он не равен нулю, большие дампы усекаются до указанного размера | LimitCORE=<байт> | DefaultLimitCORE=<байт> |
Максимальное число открытых файлов | LimitNOFILE=<число> | DefaultLimitNOFILE=<число> |
Максимальный размер виртуальной памяти процесса (address space). При достижении лимита процесс не может получить память и завершается | LimitAS=<байт> | DefaultLimitAS=<байт> |
Максимальное число процессов | LimitNPROC=<число> | DefaultLimitNPROC=<число> |
Максимальный уровень NICE | LimitNICE=<уровень> | DefaultLimitNICE=<уровень> |
Итог
Мы разобрали возможные лимиты, которые может накладывать система инициализации SystemD на службы и запускаемые службами процессы.