Фоновые задачи
Grace period: как выбрать допустимую задержку heartbeat
На примерах разбираем интервал и cron, длительность задачи, UTC и запас времени без чрезмерного откладывания сбоя.
Grace period — допустимая задержка сигнала после ожидаемого срока. Он помогает учесть обычный разброс длительности и доставки запроса, но слишком большой запас откладывает обнаружение настоящего отказа. В Heartbeat срок зависит от выбранного режима: интервал и cron считают его по-разному.
Интервал: считаем от последнего сигнала
Пусть интервал равен пяти минутам, а grace period — двум. После сигнала в 12:00 крайний срок следующего — 12:07. Если новый сигнал принят в 12:04, ожидание пересчитывается от него: следующий срок — 12:11.
Последний принятый сигнал + интервал + grace period = крайний срок
12:00 + 5 минут + 2 минуты = 12:07При создании монитора первый срок рассчитывается от момента настройки. Отправьте первый сигнал и проверьте историю, не оставляя активный монитор без подключённого источника.
Cron: считаем от точки расписания
Для ежедневной задачи в 03:00 UTC выражение Heartbeat — 0 0 3 * * *: шесть полей с секундами.
Если grace period равен двадцати минутам, сигнал после завершения работы ожидается до 03:20 UTC.
Системный crontab обычно использует пять полей и часовой пояс сервера. Его аналог 0 3 * * * соответствует
монитору только при согласованном часовом поясе. Валидатор проверяет системный формат,
а не шестипольное выражение Heartbeat.
После принятого сигнала монитор вычисляет следующую точку cron. Поэтому источник должен присылать сигнал после работы соответствующего запуска, а не заранее. Не используйте тестовый ранний запрос как подтверждение ещё не выполненного ночного бэкапа.
Включите длительность работы в запас
Для cron-мониторинга сигнал обычно идёт после завершения задачи, хотя расписание задаёт её запуск. Grace period должен покрывать обычную длительность, возможную очередь перед стартом и отправку запроса.
| Наблюдение | Что учесть при настройке |
|---|---|
| Запуск в 03:00, задача занимает 8–12 минут | Ожидание сигнала должно покрывать выполнение, а не только сетевой запрос |
| Выгрузка во внешнее хранилище иногда добавляет 5 минут | Включите её, если именно загруженная копия считается успехом |
| Воркер спит между циклами | Для интервала измеряйте полный промежуток между сигналами |
| Часто пропускается исходящий запрос | Разберите сеть и timeout; увеличение запаса не исправляет доставку |
Не выбирайте одинаковый запас для всех заданий. Слишком короткий создаст лишние инциденты, а несколько часов допуска для пятиминутного цикла надолго скроют остановку.
Grace period и подтверждение инцидента
Grace period относится к ожидаемому сигналу. Настроенная задержка подтверждения инцидента применяется отдельно после обнаружения проблемы. Эти настройки могут суммировать время до уведомления.
Кроме того, пропуск обрабатывается фоновой задачей, а доставка уведомления занимает время. Срок 12:07 не означает, что сообщение гарантированно придёт ровно в 12:07:00. Проверяйте историю сигнала, открытие инцидента и фактическое оповещение как отдельные этапы.
Как проверить выбранное окно
- Измерьте промежутки между успешными сигналами или длительность задания за репрезентативный период.
- Задайте режим, срок и допустимую задержку на основе этих наблюдений.
- На отдельном тестовом мониторе проверьте пропуск и восстановление; для задержек процесса используйте локальный стенд.
- После подключения рабочего задания проверьте первый полный запуск и уведомления.
- Пересмотрите настройки при изменении расписания, объёма данных или внешних зависимостей.
Для подключения используйте документацию Heartbeat. Практические сценарии: cron и curl, резервные копии PostgreSQL, циклы воркера.