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

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

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

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

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

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

1 ответ

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

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

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

Я знаю, что в большинстве реализаций cronзадачи будут запускаться последовательно, а не параллельно, в порядке, указанном в файле crontab. Крон запустит их один за другим...
Крону не нужно ждать завершения задачи 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 минута. Через некоторое время ваша система, вероятно, исчерпает ресурсы и станет полностью не отвечает.

Другие вопросы по тегам