SystemdDoctor
мешает работе сборка мониторинг

Исполнитель задач не берёт работу, хотя служба активна

Исполнители задач сборки (gitlab-runner и подобные) при потере связи с сервером продолжают работать как служба. Состояние active тут ничего не гарантирует: проверять надо журнал и регистрацию на сервере.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Нет связи с сервером или неверный токен

    Исполнитель опрашивает сервер и при отказе просто повторяет попытки. Служба при этом активна, в журнале — повторяющиеся ошибки.

  2. Исчерпан предел одновременных задач

    Настройка ограничивает число задач. Все слоты заняты зависшими сборками, и новые не берутся.

  3. Средство исполнения недоступно

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

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Повторяющиеся ошибки связи или регистрации.

journalctl -u gitlab-runner -n 50 --no-pager | tail -20

Состояние службы и число процессов.

systemctl status gitlab-runner --no-pager | head -8

Доступно ли средство исполнения задач.

systemctl status docker --no-pager | head -6

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Нет связи с сервером или неверный токен
Почему происходит
Исполнитель опрашивает сервер и при отказе просто повторяет попытки. Служба при этом активна, в журнале — повторяющиеся ошибки.
Как проверить
Посмотрите журнал службы.
journalctl -u gitlab-runner -n 40 --no-pager | grep -iE "error|401|403|couldn't"
Как исправить
Проверьте адрес сервера и токен в настройках исполнителя, при необходимости перерегистрируйте его.
2. Исчерпан предел одновременных задач
Почему происходит
Настройка ограничивает число задач. Все слоты заняты зависшими сборками, и новые не берутся.
Как проверить
Посмотрите настройку и текущие процессы.
grep -iE "concurrent|limit" /etc/gitlab-runner/config.toml 2>/dev/null
pgrep -a gitlab-runner | head
Как исправить
Поднимите предел или разберитесь с зависшими задачами: у сборок должно быть ограничение времени.
3. Средство исполнения недоступно
Почему происходит
При исполнении в контейнерах исполнитель зависит от демона Docker. Если тот не работает, задачи не берутся или падают.
Как проверить
Посмотрите состояние зависимости.
systemctl status docker --no-pager | head -6
systemctl show gitlab-runner -p After | tr " " "\n" | grep -i docker
Как исправить
Добавьте зависимость от демона контейнеров в unit-файл исполнителя и убедитесь, что он в автозапуске.

Пример вывода

Служба активна, задачи не берутся из-за токена. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

● gitlab-runner.service - GitLab Runner
     Active: active (running) since Mon 2026-09-15 08:00:02 MSK; 6h ago

gitlab-runner[1200]: ERROR: Checking for jobs... forbidden  runner=abc123 status=403 Forbidden

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация GitLab Runner: устранение неполадок документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено отзывом токена исполнителя на тестовом сервере.
    собственная проверка, systemd 255
    сверено 15 сентября 2026