Исполнитель задач не берёт работу, хотя служба активна
Исполнители задач сборки (gitlab-runner и подобные) при потере связи с сервером продолжают работать как служба. Состояние active тут ничего не гарантирует: проверять надо журнал и регистрацию на сервере.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Нет связи с сервером или неверный токен
Исполнитель опрашивает сервер и при отказе просто повторяет попытки. Служба при этом активна, в журнале — повторяющиеся ошибки.
-
Исчерпан предел одновременных задач
Настройка ограничивает число задач. Все слоты заняты зависшими сборками, и новые не берутся.
-
Средство исполнения недоступно
При исполнении в контейнерах исполнитель зависит от демона 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Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Исполнитель опрашивает сервер и при отказе просто повторяет попытки. Служба при этом активна, в журнале — повторяющиеся ошибки.
- Как проверить
-
Посмотрите журнал службы.
journalctl -u gitlab-runner -n 40 --no-pager | grep -iE "error|401|403|couldn't"
- Как исправить
- Проверьте адрес сервера и токен в настройках исполнителя, при необходимости перерегистрируйте его.
- Почему происходит
- Настройка ограничивает число задач. Все слоты заняты зависшими сборками, и новые не берутся.
- Как проверить
-
Посмотрите настройку и текущие процессы.
grep -iE "concurrent|limit" /etc/gitlab-runner/config.toml 2>/dev/null pgrep -a gitlab-runner | head
- Как исправить
- Поднимите предел или разберитесь с зависшими задачами: у сборок должно быть ограничение времени.
- Почему происходит
- При исполнении в контейнерах исполнитель зависит от демона 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
Связанные ошибки
- Служба active, но не работает: обёртки и oneshot Почему состояние active не означает работающую программу: oneshot с RemainAfterExit, обёртки, потерянный главный процесс.
- Connection refused в журнале службы Соединение отклонено: служба не может подключиться к базе, кешу или другому сервису. Порядок запуска, адрес, брандмауэр.
- Dependency failed for … и результат 'dependency' Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Grafana: расширение не загружается из-за подписи Расширение не появляется в интерфейсе: не подписано или подпись не совпадает. Как разрешить осознанно.
- Prometheus: каталог данных занят другим экземпляром Служба не запускается: блокировка каталога данных после аварийного завершения или второй экземпляр.
- postgresql.service активен, а кластер не работает Обёртка postgresql.service — пустой oneshot. Почему её состояние ничего не говорит о кластере и что смотреть.
- Сервер сборки не запускается: версия Java не подходит Служба падает сразу после запуска: установлена не та версия среды исполнения или выбрана не та из нескольких.
- Система загрузилась в состоянии degraded systemctl is-system-running возвращает degraded: часть служб не запустилась. Как найти их и что делать.
Где встречается чаще всего
Источники
- Документация GitLab Runner: устранение неполадок
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено отзывом токена исполнителя на тестовом сервере.