Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Start-limit-hit: Unit entered failed state because start rate limit was exceeded Linux / DevOps

Start-limit-hit start rate limit exceeded — Снятие лимита рестартов systemd

Обновлено: 18.08.2026  ·  Официальная база знаний

Архитектура ошибки и симптомы сбоя

Сообщение «Start-limit-hit: Unit entered failed state because start rate limit was exceeded» (сопровождающееся «unit.service: Triggering OnFailure= dependencies») генерируется встроенным предохранителем systemd Rate Limiter. Если служба падает и пытается перезапуститься (через директиву Restart=always или внешний триггер) чаще, чем разрешено политикой (по умолчанию: более 5 раз за 10 секунд), systemd блокирует любые дальнейшие попытки запуска, чтобы предотвратить 100% утилизацию CPU и переполнение диска логами.

Диагностическая таблица параметров сбоя

ПараметрЗначениеИнженерный смысл сбоя
StartLimitIntervalSec10s (Default)Временное окно контроля частоты перезапусков сервиса.
StartLimitBurst5 (Default)Максимальное число попыток запуска внутри интервала StartLimitIntervalSec.
RestartSec100ms (Default)Пауза между падением процесса и следующей попыткой запуска.

Пошаговое дерево решений и сценарии траблшутинга

Сценарий 1: Экстренный сброс счетчика попыток перезапуска

# Сброс счетчика срабатываний лимита (снимает блокировку systemd):
sudo systemctl reset-failed service_name.service

# Повторный запуск службы:
sudo systemctl start service_name.service

Сценарий 2: Оптимизация порогов Rate Limit в конфигурации службы

Настройте адекватные интервалы перезапуска, добавив задержку между попытками:

# Открытие редактора переопределения юнита:
sudo systemctl edit service_name.service

# Добавьте в открывшийся файл:
[Unit]
StartLimitIntervalSec=300
StartLimitBurst=10

[Service]
Restart=always
RestartSec=10s

# Примените изменения:
sudo systemctl daemon-reload
sudo systemctl restart service_name.service

Сценарий 3: Полное отключение защиты Rate Limiter (только для тестовых сред)

# Отключение лимита частоты перезапусков:
[Unit]
StartLimitIntervalSec=0

Сценарий 4: Устранение циклического триггера перезапуска (Restart Loops)

Проверьте логи, чтобы устранить саму причину мгновенного падения приложения при старте:

# Просмотр последних 50 строк лога сбойного сервиса:
sudo journalctl -u service_name.service -n 50 --no-pager
Службы попадают в бесконечный crash-loop и блокируются systemd?
ITSTM выявит коренные причины падения демонов, настроит безопасные политики экспоненциального отката рестартов и устранит простои сервисов.
Практический опыт инженера: Для критических production-сервисов всегда выставляйте RestartSec=5s или 10s вместе с StartLimitIntervalSec=120 и StartLimitBurst=5. Это защищает дисковую подсистему от спама логами гигабайтного объема при крахе БД.

Частые вопросы (FAQ)

Где должны объявляться директивы StartLimitIntervalSec: в [Unit] или [Service]?

В современных версиях systemd (версии 230+) директивы StartLimitIntervalSec и StartLimitBurst объявляются в секции [Unit]. В устаревших версиях (systemd <= 229, например CentOS 7) они указывались в секции [Service].

Почему служба падает 5 раз подряд за полсекунды?

Если параметр RestartSec не задан (по умолчанию 100ms), systemd мгновенно перезапускает упавший процесс. Если приложение падает сразу из-за битого конфига, лимит 5 попыток исчерпывается за доли секунды.

Как сбросить счетчики rate-limit сразу для всех сервисов системы?

Выполните общую команду: sudo systemctl reset-failed.

Что такое RestartMode=direct в systemd?

Это специальный режим перезапуска (появившийся в новых версиях systemd), который перезапускает только упавший бинарный файл без повторного прогона зависимостей и предстартовых скриптов ExecStartPre.