Инструменты разработчика · Генератор Crontab
Запуск задания cron каждую минуту: когда опрос неверен и что использовать
· Почему это важно
хрон опрос производительность
Поминутные задания легко писать, но жить с ними дорого. В этом посте объясняются затраты, случаи, когда они оправданы, а также альтернативы более длительным интервалам демонам и триггерам событий.
Ежеминутный синтаксис создает 1,440 кандидатов-календарей на полный 24-часовой день.
`* * * * *` расширяется до каждой минуты с 0 по 59, каждого часа и каждой календарной даты. В течение полных двадцати четырех часов в сутки создаются 1,440 соответствующие минутные метки на настенных часах. Предустановка и тесты ToolAcre определяют грамматику, а при предварительном просмотре отображаются только следующие пять кандидатов, чтобы интерфейс оставался читабельным.
Счет описывает возможности, а не успешные действия. В этом предварительном просмотре может быть пропущена несуществующая локальная минута во время перехода в прямую зону, и браузер никогда не выполнит задачу. Используйте это выражение, чтобы рассуждать о частоте, а затем измеряйте фактические эффекты во время выполнения там, где существуют команда и планировщик.
Стоимость выполнения не может быть рассчитана только на основе выражения.
Выражение не содержит времени запуска процесса, количества подключений, объема журнала или использования ресурсов. Чек в одну строку и крупный импорт могут иметь одни и те же пять звезд, но при этом требуют несравнимых затрат. Список накладных расходов в рабочей книге может быть правдоподобным, но ToolAcre не может определить их количественно из текста расписания.
Таким образом, анализ производительности начинается за пределами генератора: наблюдение за длительностью, CPU, I/O и последующие вызовы реальных действий. Тщательно умножайте на частоту кандидатов только после измерения репрезентативных серий. Анализатор может сказать вам, сколько минут совпадают; он не может сказать вам, сколько стоит каждый матч.
Пригодность зависит от внешнего воздействия и требований к задержке.
Оправданность ежеминутного опроса зависит от требований к задержке и плана действий. ToolAcre не знает, является ли команда идемпотентной, существует ли источник событий и какую задержку могут допустить пользователи. Он не должен маркировать график как «хороший» или «плохой».
Переведите требование в максимально приемлемый интервал, а затем сравните его с наблюдаемыми затратами и обработкой ошибок. Если пятиминутной задержки достаточно, `*/5 * * * *` уменьшает количество минутных кандидатов до двенадцати в час. Если задержка составляет всего одну минуту, сохраните частоту и явно устраните проблемы с выполнением.
Минутные смещения распределяют фиксированную почасовую работу, но не рандомизируют ее.
Фиксированное смещение, такое как `7 * * * *`, выбирает седьмую минуту каждого часа. Он может отделить эту работу от работы, привязанной к нулевой минуте, но он является детерминированным, а не рандомизированным. Множественные смещения могут распределить известные задания в течение часа, когда точная минута их выполнения не важна.
ToolAcre описывает седьмую минуту каждого часа и просматривает соответствующие даты. Он не проверяет другие расписания на хосте, поэтому не может доказать, что выбранное смещение является тихим. Прежде чем заявлять о распределении нагрузки, проведите инвентаризацию и сохраните причину смещения в документации.
Рабочие и сервисные таймеры являются альтернативой за пределами этого репозитория.
Долго работающие рабочие процессы, доставка событий и таймеры диспетчера служб могут заменить опрос в некоторых системах. Ни один из них не реализован генератором Crontab, и их конфигурацию нельзя вывести из `* * * * *`. В репозитории нет интеграции клиента очереди или супервизора.
Выбирайте альтернативы из данных целевой архитектуры. Работник может удалить повторный запуск, введя требования к жизненному циклу и восстановлению. Путь к событию может уменьшить количество пустых проверок при добавлении семантики доставки. Генератор остается полезным для любых остаточных периодических задач, но он не может принимать решения по этим компромиссам.
Рабочий пример: уменьшить частоту кандидатов и сравнить предварительные просмотры
Сравните три выражения на панели: каждую минуту, `*/5 * * * *` и `7 * * * *`. Первый продвигается на одну минуту, второй выбирает 0, 5, 10 и последующие кратные, а третий выбирает одну минутную позицию в час. Описания отображают каждое изменение без выполнения опроса.
Используйте эти списки кандидатов, чтобы обсудить задержку в конкретных терминах. Если запрос поступает сразу после пятиминутного кандидата, следующая возможность появится почти через пять минут. Эта простая граница является доказательством расписания. Продолжительность обработки, задержка в очереди и успех остаются дополнительными показателями, которые браузер не может предоставить.
Чего это не касается — субминутное планирование, которое cron не может выразить.
Крон с пятью полями не может выражать секунды, потому что этот синтаксический анализатор начинается с минут. Входной сигнал с шестью полями отвергается, а не рассматривается как более высокочастотный. Создание цикла оболочки для эмуляции работы менее минуты является поведением команды за пределами ToolAcre и не рекомендуется здесь без тестирования, специфичного для времени выполнения.
Если требование меньше одной минуты, выберите планировщик или исполнитель, разработанный и задокументированный для этого разрешения. Не вводите в первое поле неподдерживаемое значение секунд. Ошибка «точных пяти полей» — это полезная защита от диалекта, которая предотвращает неправильное прочтение быстро просматриваемого выражения.
Вывод: выберите самый грубый интервал, отвечающий потребностям, — и генератор создаст выражение */5 или */15 так же просто, как пять звезд.
Выберите самую грубую частоту, которая удовлетворяет измеренной потребности, но держите решение отдельно от достоверности выражения. ToolAcre может сделать минутные, пятиминутные и смещенные расписания одинаково синтаксически правильными. Только оперативные данные определяют, какой из них принадлежит системе.
Используйте генератор для перечисления возможностей, а затем прикрепите к цели измерения стоимости, задержки и надежности. Такая объединенная запись более честна, чем объявление поминутного cron дорогим во всех случаях или предположение, что менее частое выражение автоматически исправляет неэффективную работу.