CRON начинает пропускать следующую минуту

Я настраиваю одноминутные crons для crontab с помощью сценария bash для целей нагрузочного тестирования. Нет проблем с выполнением скрипта, и crons добавлены, и я могу контролировать, что crons выполняются через / var / log / cron.

Но проблема в том, что на днях я сообщил сценарию, что он добавил 106 крон, и они были выполнены хорошо. Но сегодня я сбросил crontab с нуля, и мне удалось установить только 85 крон. Затем он начинает говорить

crond [31243]: (root) INFO (выполнение поминутного задания, запланированного на 08:32, отложено до Следующая минута 08:33 Пропуск выполнения задания.)

, и в конечном итоге все кроны начнут пропускаться, и ничего не будет выполняться. Но первоначальный вывод, который у меня был, был 106 - это максимальное значение, которое может быть установлено на этом сервере. Но сегодня его количество сократилось до 85. Конфигурации сервера не изменились, та же среда, что и когда была 106

Это из-за слишком частой настройки crons или чего-то еще. Я новичок в cron и его работе. Пожалуйста, помогите

0
задан 27 May 2019 в 12:56
1 ответ

Похоже, вы настраиваете расписание cron с помощью crontab с множеством записей с одинаковыми расписаниями в ожидании, что cron будет выполнять их параллельно для ты.

* * * * * /path/to/task1
* * * * * /path/to/task2
* * * * * /path/to/task3
...

Это не точно то, что происходит:

В большинстве реализаций cron я знаю, что задачи будут запускаться в последовательном порядке, а не параллельно , в том порядке, в котором задачи перечислено в файле crontab. Cron будет запускать их по очереди ...
Cron не нужно будет ждать завершения задачи 1 перед запуском задачи 2, но запустит задачу 3 только после запуска задачи 1 и задачи 2 и т. Д. После запуска задачи будут выполняться параллельно (до тех пор, пока они не будут завершены)

Задачи, которые необходимо запустить, и нагрузка на систему в то время ограничивают скорость запуска cron новых задач. Когда cron не может запустить все задачи в отведенный интервал времени и начинается следующая итерация вашего расписания (новая минута), он теряет задачи, которые не могли быть запущены. Это приведет к ошибке:

Выполнение поминутного задания, запланированного на 08:32, отложено до следующей минуты 08:33. Пропуск выполнения задания.


Похоже, вы хотите запускать множество одинаковых задач параллельно:

* * * * * /path/to/task
* * * * * /path/to/task
* * * * * /path/to/task
...

просто используйте вспомогательную программу parallel для этого;

* * * * * parallel -j 50 /path/to/task

Обратите внимание, что если ваши параллельные задачи не завершаются в течение одной минуты, в следующую минуту независимо от этого начнутся 50 дополнительных запусков вашей задачи, что с учетом дополнительной нагрузки тех задач, которые все еще выполняются,также будет работать дольше 1 минуты. Через некоторое время ваша система, вероятно, исчерпает ресурсы и полностью перестанет отвечать.

0
ответ дан 23 November 2019 в 23:41

Теги

Похожие вопросы