Планировщик Laravel работает с задержкой (не вовремя) - PullRequest
0 голосов
/ 30 сентября 2018

Laravel 5.5 PHP 7.1

У меня странная проблема на рабочем сервере, которая задерживает планировщик, поэтому задачи не выполняются вовремя.Кажется, что по какой-то причине команда artisan schedule:run иногда загружается.Если я запускаю artisan schedule:run из консоли, он запускается немедленно, проблема в том, когда запускается задание cron.Я установил запуск cron на 5 минут вместо всех минут, чтобы увидеть больше ясности.

Журнал Cron:

Sep 29 10:05:01 localhost CROND[17311]
Sep 29 10:10:01 localhost CROND[17846]
Sep 29 10:15:01 localhost CROND[18165]

Журнал планировщика:

Received ping at Saturday, 29-Sep-2018 10:06:11 EDT 
Received ping at Saturday, 29-Sep-2018 10:10:01 EDT 
Received ping at Saturday, 29-Sep-2018 10:18:55 EDT

Единственная задача, которую имеет планировщик, - это простое замыкание для измерения времени, никаких сложных задач.

$schedule->call(function () {
        return true;
    })
    ->everyMinute()
    ->pingBefore('...')

Кто-то сказал мне, что это может быть проблема загрузки сервера или синхронизация часов, после запуска uptime; sar -q; etc результаты 10:52:05 up 4:29, 1 user, load average: 0,02, 0,04, 0,05 и часы синхронизированы.

Реальная проблема заключается в том, что если у меня есть задание, которое запускается, например, в 10:05, оно никогда не запускается, потому что планировщик загружен в 10: 06.

Есть идеи?

Обновлены результаты: ----------------

Я обнаружил, что если я выполню любую команду ремесленника во время "зависания"вверх "требуется навсегда.Допустим, вы выполняете любую команду ремесленника в 16:24. Эта команда не разрешается до 16:27:31 (когда система «заблокирована»)

У меня больше нет идей ... Посмотрела в логахи все это, но НЕТ.Я думаю, что это не Laravel, может быть, это проблема с сервером.Нагрузка на сервер очень мала, это капля для частного приложения с 15 пользователями.Mysql запросы не медленные (у меня активирован медленный журнал запросов)

Cron log:

Sep 30 16:20:01 localhost CROND[28616]
Sep 30 16:21:01 localhost CROND[854]
Sep 30 16:22:02 localhost CROND[988]
Sep 30 16:23:01 localhost CROND[1062]
Sep 30 16:24:01 localhost CROND[1132]
Sep 30 16:25:01 localhost CROND[1199]
Sep 30 16:26:01 localhost CROND[1255]
Sep 30 16:27:01 localhost CROND[1315]
Sep 30 16:28:01 localhost CROND[1411]
Sep 30 16:29:01 localhost CROND[1508]
Sep 30 16:30:01 localhost CROND[1599]
Sep 30 16:31:01 localhost CROND[1670]
Sep 30 16:32:01 localhost CROND[1742]
Sep 30 16:33:01 localhost CROND[1807]
Sep 30 16:34:01 localhost CROND[1874]
Sep 30 16:35:01 localhost CROND[1936]
Sep 30 16:36:01 localhost CROND[1995]
Sep 30 16:37:01 localhost CROND[2062]

Журнал планировщика:

[2018-09-30 16:20:12] production.INFO: schedule call  
[2018-09-30 16:21:01] production.INFO: schedule call  
[2018-09-30 16:22:02] production.INFO: schedule call  
[2018-09-30 16:23:01] production.INFO: schedule call  
[2018-09-30 16:27:31] production.INFO: schedule call  
[2018-09-30 16:27:31] production.INFO: schedule call  
[2018-09-30 16:27:31] production.INFO: schedule call  
[2018-09-30 16:27:31] production.INFO: schedule call  
[2018-09-30 16:28:01] production.INFO: schedule call  
[2018-09-30 16:29:01] production.INFO: schedule call
[2018-09-30 16:30:01] production.INFO: schedule call
[2018-09-30 16:31:01] production.INFO: schedule call
[2018-09-30 16:32:02] production.INFO: schedule call
[2018-09-30 16:33:01] production.INFO: schedule call
[2018-09-30 16:37:53] production.INFO: schedule call
[2018-09-30 16:37:53] production.INFO: schedule call
[2018-09-30 16:37:53] production.INFO: schedule call
[2018-09-30 16:37:53] production.INFO: schedule call

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Проблема была вызвана истощенной энтропией PHP-скриптом.

Чтобы решить эту проблему, создайте энтропию с помощью hasged daemon:

  1. Включить репозиторий EPEL:

    yum install epel-release

  2. Установите демон с помощью следующей команды и включите его:

    yum install haveged chkconfig haveged on systemctl start haveged

0 голосов
/ 30 сентября 2018

возможно вам нужно написать журнал звонков, а не пинг полученного журнала.Возможно, вы получили пинг с задержкой, а не с расписанием вызовов.

...