Magento 2: ошибка в CronJob? MySQL всегда работает с использованием 30 %, и многие процессы php запущены
Я запускаю magento 2 (2.2.1) на nginx и по умолчанию включаю cronjob.
php bin/magento cron:install
Я не настраиваю никаких настроек в отношении расписания заданий.
После запуска машины через несколько дней я увидел, что служба mysql всегда используется почти на 30-40 %, и на машине выполняется много процессов "php7.1"
Я перезагружаю машину, и ошибка та же, прямо сейчас есть только "несколько" процессов php7.1, но они продолжают поднять
Я уже проверил журналы, там нет ошибок или исключений.
Я нашел проблему только в бэкэнде m2
Этот индексатор всегда не "актуален"
Не могли бы вы, пожалуйста, дать мне подсказку, как я могу решить эту проблему?
Прикрепил скриншот с кронтаба
2 answers
Мое лучшее предположение,
Смотрите это на stackexchange и это на github. Проблема каким-то образом возникает, поскольку некоторые задания не указаны как завершенные. Это довольно долго выводило меня из себя.
Быстрая диагностика, чтобы узнать, есть ли у вас проблема, состоит в том, чтобы выполнить следующий запрос, и если он вернется с более чем 1200-1500 или около того, у вас, вероятно, есть проблема:
select count(*) from cron_schedule;
Быстрое решение состоит в том, чтобы удалить большую часть материалов, которые имеют статус запущенных хронометраж:
delete from cron_schedule where scheduled_at < date_sub(now(), interval 1 hour);
Чтобы избежать повторения, установите cron-задание, которое периодически удаляет застрявшие задания. Ниже задание может быть добавлено в cron-вкладку. Однако, если он у вас есть на общем сервере, пароль и имя пользователя MySQL будут видны другим пользователям, работающим под управлением top-c и аналогичными, и это не рекомендуется, подробнее читайте в рекомендации по безопасности паролей.
* */8 * * * <path_to_mysql_binary_dir>/mysql -u<sql_user> -p'<sql_user_pass>' <database_name> -e "delete from cron_schedule where scheduled_at < date_sub(now(), interval 1 hour)";
Отрегулируйте ***** в соответствии с частотой, я не вижу необходимости запускать его очень часто, так как я все еще не сталкивался с той же проблемой снова после нескольких месяцев быстрого исправления.
Есть модуль для устранения этой проблемы: