Идея: общее кратное периодов
Первое задание запускается в моменты 0, a, 2a и далее, второе — в моменты 0, b, 2b. Запуски совпадают, когда момент делится и на a, и на b, то есть является общим кратным. Первое такое время после старта — наименьшее общее кратное.
Следовательно, НОК — это период, с которым повторяется картина совпадений. Зная его, можно заранее найти все пиковые моменты и подготовить сервер.
НОК через наибольший общий делитель
Для двух чисел верно соотношение НОД · НОК = a · b. Поэтому НОК = a · b ÷ НОД. Для 45 и 60 наибольший общий делитель равен 15, и НОК = 45 · 60 ÷ 15 = 180 минут, то есть три часа.
Калькулятор выдаёт и НОД, и НОК. Большой НОД означает, что периоды «родственные» и запуски совпадают часто, а НОД, равный единице, соответствует взаимно простым периодам и редким совпадениям.
Разбор нескольких случаев
Для 45 и 60 минут за сутки, то есть 1440 минут, будет 1440 ÷ 180 = 8 совпадений. Заметьте, что в момент нулевого старта оба задания запускаются вместе, поэтому первое совпадение приходится на старт, а следующие идут с шагом НОК. Для 12 и 18 минут НОД равен 6, НОК — 36, а за час запуски совпадут каждые 36 минут.
Если периоды 7 и 13 минут, НОД равен 1, а НОК — 91 минута. Совпадения редки, но когда случаются, нагрузки складываются без предупреждения, поэтому пики стоит учитывать в любом случае.
Как развести расписания
Самый простой способ — сдвинуть старт одного задания на несколько минут. Если сдвиг не делится на НОД периодов, запуски не совпадут никогда; если делится — совпадения останутся, но станут на другом шаге.
Дополнительно пригодятся блокировки и очереди: даже при совпадении запуска второе задание ждёт освобождения ресурса. Это не заменяет планирования, но защищает от конкурирующей записи.
Что модель не учитывает
Длительность выполнения не входит в расчёт: если одно задание длится дольше, чем интервал между запусками, нагрузки пересекаются и без точного совпадения времён старта. Для таких случаев нужен анализ реальных журналов.
Нерегулярные расписания cron (по дням недели, по списку минут) не сводятся к двум периодам. Страница подходит для простых равномерных расписаний с целыми периодами. Если у вас периоды в разных единицах, предварительно переведите их в минуты или секунды, иначе кратные окажутся неверными.
Планирование нагрузки по совпадениям
Если оба задания тяжёлые, сложите их пиковые потребности и проверьте, выдерживает ли сервер сумму. Тогда редкие совпадения становятся предсказуемым событием, а не неприятной неожиданностью на ночном мониторинге.
Полезно записать расписание в одну таблицу: период, НОД, НОК и число совпадений в сутки. Такая сводка помогает при согласовании окон обслуживания и показывает, когда безопасно проводить обновления.
Формула расчёта
НОК(a, b) = a · b ÷ НОД(a, b)
Проверенные примеры
Через какое время запуски совпадут?
НОД = 15, НОК = 45 · 60 ÷ 15 = 180 минут, то есть каждые 3 часа.
Через сколько единиц совпадут запуски?
НОД = 6, НОК = 12 · 18 ÷ 6 = 36.
Как пользоваться онлайн-калькулятором
- Переведите оба периода в одну единицу, например в минуты.
- Введите периоды в поля калькулятора.
- Нажмите «Вычислить» и прочитайте НОК — интервал между совпадениями.
- Если совпадения нежелательны, сдвиньте начальное время одного задания.