Выражение */5 * * * *
*/5 * * * * — самое популярное cron-выражение для частых периодических задач. Запускается каждые 5 минут от начала часа: 00, 05, 10, 15, 20... 55. Итого 12 раз в час и 288 раз в сутки.
Разбор по полям:
- */5 — минута: каждые 5 минут (0, 5, 10, ..., 55).
- * — час: любой (0-23).
- * — день месяца: любой (1-31).
- * — месяц: любой (1-12).
- * — день недели: любой (0-7).
Когда применять каждые 5 минут
- Health check / мониторинг. Проверка доступности веб-сервиса, БД, очередей. 5 минут — баланс между быстрой реакцией и нагрузкой.
- Синхронизация данных. Импорт из внешнего API, обновление кэша курсов валют, сбор метрик.
- Очистка очередей. Обработка отложенных задач, retry неудачных операций.
- Polling. Опрос внешних сервисов которые не поддерживают webhooks. Например, проверка статуса платежей у банка.
- Aggregation. Подсчёт метрик за последние 5 минут, обновление дашбордов.
- Cache warmup. Прогрев кэша популярных страниц перед пиком трафика.
Когда выбираете частоту cron, спросите: «какую задержку мы готовы терпеть?». Если ответ 1 минута — cron каждую минуту. Если 5 минут — */5. Если час — каждый час. Не делайте чаще, чем нужно — это просто лишняя нагрузка.— Site Reliability Engineering, Google, 2016
Альтернативы по частоте
Подводные камни
- Overlap (наложение). Cron не следит, выполняется ли уже предыдущий запуск. Если задача длится 7 минут, две будут параллельно. Используйте flock или distributed lock.
- Тяжёлые задачи. Не запускайте каждые 5 минут процесс, который ест 50% CPU. Сервер ляжет.
- Пиковая нагрузка. Если десять разных задач запускаются на :00 — это пик. Распределите: одна на :00, другая на :01, третья на :02 (1 * * * *, 2 * * * *...).
- Логирование. 288 запусков в сутки = много логов. Используйте уровни (INFO для запуска, DEBUG для подробностей), ротацию.
- Idempotency. Задача должна быть безопасной к повторному запуску. Если упала на 3-й минуте, на :05 запустится снова — не должно быть дубля действий.
- Часовой пояс. Cron работает в timezone сервера. Если задача «каждые 5 минут» — это не важно. Если «каждый день в 9:00» — критично.
- POSIX crontab specification. IEEE / Open Group. pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html. 2018.
- Site Reliability Engineering: How Google Runs Production Systems. Beyer, Jones, Petoff, Murphy. O'Reilly. 2016.
- GitHub Actions — schedule events. GitHub. docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule. 2024.
