Failed with result 'resources'
Состояние resources значит, что запуск не состоялся из-за нехватки чего-то системного: памяти, процессов, дескрипторов, места в контрольной группе. Отличие от кодов 200-й группы в том, что там шаг подготовки назван прямо, а здесь systemd сообщает лишь об общей нехватке.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Упор в предел числа задач
Если у среза или службы исчерпан
TasksMax=, новый процесс создать нельзя. Часто это следствие расплодившихся дочерних процессов. -
Нехватка памяти на машине
При исчерпанной памяти не проходит даже подготовка процесса. Попытки запуска будут падать до освобождения памяти.
-
Исчерпаны файловые дескрипторы в системе
Общесистемный предел дескрипторов исчерпывается редко, но при этом перестают запускаться любые службы.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает, чего именно не хватило при запуске.
journalctl -xeu myapp.service --no-pager -n 30Потребление по срезам: видно, кто съел память или расплодил задачи.
systemd-cgtop -1 --depth=2 | head -15Действующие пределы службы.
systemctl show myapp.service -p TasksMax -p TasksCurrent -p MemoryMaxРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Если у среза или службы исчерпан
TasksMax=, новый процесс создать нельзя. Часто это следствие расплодившихся дочерних процессов.
- Как проверить
-
Посмотрите пределы и текущее число задач.
systemctl show myapp.service -p TasksMax -p TasksCurrent systemctl show system.slice -p TasksMax -p TasksCurrent
- Как исправить
-
Поднимите
TasksMax=или разберитесь, почему процессов так много: обычно виноват не предел, а утечка процессов.
- Почему происходит
- При исчерпанной памяти не проходит даже подготовка процесса. Попытки запуска будут падать до освобождения памяти.
- Как проверить
-
Посмотрите память и записи ядра.
free -h journalctl -k -b --no-pager | grep -i "out of memory" | tail -5
- Как исправить
- Освободите память и повторите запуск. Разовое повышение пределов тут не поможет.
- Почему происходит
- Общесистемный предел дескрипторов исчерпывается редко, но при этом перестают запускаться любые службы.
- Как проверить
-
Сравните использованные и допустимые дескрипторы.
cat /proc/sys/fs/file-nr cat /proc/sys/fs/nr_open
- Как исправить
-
Поднимите
fs.file-maxчерез sysctl и найдите программу, которая держит дескрипторы: обычно это одна служба с утечкой.
Пример вывода
Запуск не состоялся из-за исчерпанных задач в срезе. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: resources) since Mon 2026-09-15 21:55:41 MSK; 2s ago
systemd[1]: myapp.service: Failed to fork: Resource temporarily unavailable
systemd[1]: myapp.service: Failed with result 'resources'.
Связанные ошибки
- Too many tasks: упор в предел TasksMax Служба не может создать новый процесс: достигнут предел TasksMax. Где он задан и как поднять правильно.
- status=204/MEMORY в systemd Код 204/MEMORY: systemd не смог выделить память при подготовке запуска службы. Что проверять на машине и в unit-файле.
- Too many open files в журнале службы Служба исчерпала лимит файловых дескрипторов. Как правильно поднять LimitNOFILE и когда дело в утечке.
- status=219/CGROUP в systemd Код 219/CGROUP: не удалось создать или настроить контрольную группу службы. Причины на уровне системы и контейнеров.
- Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
- Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
- Elasticsearch: max virtual memory areas vm.max_map_count is too low Elasticsearch отказывается стартовать из-за заниженного vm.max_map_count. Как поднять значение и закрепить его.
- Failed with result 'core-dump' Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
Источники
-
systemd.service(5)
Значение resources в таблице Result. -
systemd.resource-control(5)
TasksMax= и пределы контрольных групп. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на unit с TasksMax=1 и программой, создающей дочерний процесс.