Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 4 из 12

ulimit и sysctl: потолки системы

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 10 · на машине · 5 мин

Лимит службы

Службу запускает systemd, и лимиты она получает от него.

systemd берёт лимиты из файла юнита: строка LimitNOFILE=64 в разделе [Service] ставит сборщику оба лимита. Без такой строки служба получает лимиты systemd по умолчанию: мягкий 1024 и жёсткий 524288. Поэтому ulimit в твоей оболочке и /etc/security/limits.conf на службы не действуют: limits.conf читают программы входа в систему, а systemd его не читает.

Файл юнита сборщика лежит в /usr/lib/systemd/system: там его держит пакет, и обновление пакета перепишет любую правку в нём. Своё значение кладут в drop-in — файл /etc/systemd/system/<юнит>.d/<имя>.conf, который systemd читает поверх основного; так ты поднимал MemoryMax в уроке о памяти. systemctl cat <юнит> показывает оба файла по порядку, а sudo systemctl edit <юнит> открывает drop-in в редакторе.

Правка лимита проходит три места: файл, описание в systemd после daemon-reload и процесс после перезапуска. Описание показывает systemctl show -p LimitNOFILE <юнит>, процесс — /proc/<PID>/limits. Пока служба не перезапущена, процесс работает со старым лимитом.

Упражнение · сделать

Подними лимит сборщику

Подними сборщику lab-shipper лимит открытых файлов до 4096 так, чтобы правка пережила обновление пакета: файл юнита в /usr/lib/systemd/system не меняй. Работающий сборщик должен получить новый лимит.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Задать лимит 4096 в drop-in поверх файла пакета ещё не выполнена
  • Дать новый лимит работающему сборщику ещё не выполнена

Цели шага

0 из 2
  • Задать лимит 4096 в drop-in поверх файла пакета — ещё не выполнена
  • Дать новый лимит работающему сборщику — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Задать лимит 4096 в drop-in поверх файла пакета — ещё не выполнена
  • Дать новый лимит работающему сборщику — ещё не выполнена
Загрузка…