Я настраиваю одноминутные crons для crontab с помощью сценария bash для целей нагрузочного тестирования. Нет проблем с выполнением скрипта, и crons добавлены, и я могу контролировать, что crons выполняются через / var / log / cron.
Но проблема в том, что на днях я сообщил сценарию, что он добавил 106 крон, и они были выполнены хорошо. Но сегодня я сбросил crontab с нуля, и мне удалось установить только 85 крон. Затем он начинает говорить
crond [31243]: (root) INFO (выполнение поминутного задания, запланированного на 08:32, отложено до следующей минуты 08:33. Пропуск выполнения задания.)
и в конечном итоге все crons начнут пропускаться, и ничего не будет выполнено. Но первоначальный вывод, который у меня был, был 106 - это максимальное значение, которое может быть установлено на этом сервере. Но сегодня оно уменьшилось до 85. Конфигурации серверов не изменились, та же среда, что и когда было 106
Это из-за слишком частой настройки crons или чего-то еще. Я новичок в cron и его работе. Пожалуйста помоги
Похоже, вы настраиваете расписание 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 минута. Через некоторое время ваша система, вероятно, исчерпает ресурсы и полностью перестанет отвечать.