Меню

Ошибка wp-cron.php WordPress. Нагрузка и нехватка памяти

Подробная инструкция для отключения wp cron на WordPress и переключение его на серверный cron. Перечисление способов переключения.Буквально пару недель назад, столкнулся совсем случайно с неприятным моментом в серверных логах проекта. Значительное увеличение нагрузки на исполнительные  файлы. Сопровождающиеся нехваткой памяти, фатальной ошибкой и невозможностью увеличить лимит допустимого значения памяти. Кажется что это банальная ошибка нехватки памяти, которую можно спокойно исправить.

Конечно все доступные методы исправления этой ошибки, я описал в прошлой статье.  Надеюсь они будут полезны и решат ваши проблемы. В моем случае, все методы были провальными. Рассмотрев более детально логи, можно было увидеть. В конце адреса ошибка обращалась непосредственно к wp-cron.php. Что и  приводило к фатальной ошибке. Именно поэтому я пишу этот пост, возможно он пригодиться тем у кого возникнут схожие проблемы с cron на WordPress.

Для чего нужен wp-cron.php на WordPress

Cron — своего рода, частично заменяет серверный планировщик. Беря на себя некоторые функции к примеру:

  • Публикация постов
  • Очистка корзины движка
  • Очистка ревизий записей
  • Ведение кеша
  • Отправка некоторых уведомлений

Выполнение заданий происходит немного другим способ. Серверный cron взаимодействует с исполнительным элементом, точно в заданный интервал указанный при формировании задания. А вот wp-cron.php, выполняется только тогда, когда пользователь заходит на ресурс.

Wp-cron не работает, тормозит и способствует высокой нагрузке

Действительно недостатки есть везде, даже в работе с WordPress. Я не хочу сказать, что эта система управления плохая нет. Это отличная  стабильная CMS, а минусы есть везде. Главной ошибкой этого движка, является его планировщик заданий, установленный по умолчанию.

Который вызывает значительную нагрузку на сервер и базу данных во время исполнения. Время загрузки сайта увеличивается от 100-500 мс, если возникает одновременный поток пользователей от 100 человек. Мгновенно возрастает ресурсозатратность, использование памяти и ресурсов процессора. Соответственно серверная часть, не может позволить использовать большее количество ресурсов чем установлено. Именно поэтому мы получаем фатальную ошибку, спровоцированную торможением этого планировщика.

Как отключить Wp-cron и использовать серверный планировщик

Отключение достаточно простое, открываем файл конфигурации wp-config.php. Затем следует ввод константы:

Смотрите изображение:

Отключаем wp cron, через файл конфигураций wp-config.php. Пример заполнения файла строкой константы для отключения wp-cron.

После отключения планировщика непосредственно на WordPress, необходимо сразу включить его на сервере. Так как выполнение всех запланированных задач, будет мгновенно завершено. А это не допустимо!

Подключаем задание cron в панеле VestaCp

Для этого нам необходимо, авторизоваться в хостинг панели. Затем перейдите в соответствующий раздел и нажмите на «Плюс», перейдя в раздел добавления задания. В строке «Команда» — укажите следующий путь к исполнительному файлу:

Задайте интервал исполнения каждую минуту или каждые пять минут. Как вам удобно! Для низко-ресурсных серверов, лучшим значением будет 5 минут.

Панель управления хостингом Vestacp, добавление задания в планировщик заданий cron. Пример добавления задания.

Добавление задания в планировщик cron на vestacp. Указание пути к исполняемому скрипту wp-cron.php и соответствующие параметры.

Таким образом можно достаточно быстро, добавить данное задание в очередь на выполнение.

Как заменить wp-cron на серверный планировщик

Эти методы подойдут, в том случае если у вас нет панели управления VestaCp. Для смены планировщика заданий, воспользуйтесь консолью. Затем наберите одну из предложенных команд на выбор:

Все три задания обращаются к файлу с интервалом один раз в четыре минуты. Нужно выбрать один из них и изменить ваш_сайт на домен.

Немного дополнительной информации: Если у вас нет желания отключать плаировщик на WordPress. Воспользуйтесь плагином, который поможет понять какие задания активны и на сколько влияют на ресурсы сервера. Плагин называется: WP-Cron Events


  • Читайте статьи по этой теме:

 

Комментарии 2

  • Вы написали что после отключения крона нужно включить его через хостинг. Зачем? Что такого если мой сайт перестанет выдавать нагрузки на хостинг из за кривости последних версий вордпреса. Раньше такого ведь не было, а тут 67 процентов нагрузка на вип тарифе… Спасибо за внятный урок!

    • Добрый вечер Алексей)Отвечаю на Ваш комментарий) Правда зачем вообще включать крон. Cron — своего рода, частично заменяет серверный планировщик. Беря на себя некоторые функции к примеру: Публикация постов, Очистка корзины движка, Очистка ревизий записей, Ведение кеша, Отправка некоторых уведомлений. Я на своем сервере не отключал крон, а также он работает и на WP.
      Крон на сервере, создает к примеру еженедельный бекап базы данных. Но не затрагивает WP — мне это не нужно!!! На WP я не стал отключать крон — это крайняя мера, если нет доступных вариантов решения. Но если Вы его отключаете, то все ваши задания сайта должны как-то обрабатываться. Именно поэтому нужно использовать крон сервера.
      При этом в статье, если Вы читали внимательно, написано:
      Немного дополнительной информации: Если у вас нет желания отключать плаировщик на WordPress. Воспользуйтесь плагином, который поможет понять какие задания активны и на сколько влияют на ресурсы сервера. Плагин называется: WP-Cron Events
      Помогает увидеть задания, которые выполняет Ваш cron WP. В некоторых случаях, когда Вы отключаете обновление WP. В нем происходит ошибка, и задания дублируются.
      Дополнительно я описывал и эту ситуацию в статье: «Высокая нагрузка WordPress на CPU — процессор, сервер и хостинг» — с изображениями примеров до и после.
      Вырезка из статьи:
      Проблема заключалась в ошибке WP Cron (крона). Месяца четыре назад я устанавливал плагин, который запрещает обновляться движку, темам и плагинам. Первым звонком по моим пониманием, были ошибки в серверных логах сайта адресованные wp-cron.php. Ошибка заключалась в выделении памяти на процесс, а точнее нехватки памяти. Когда я вспомнил про эту ситуацию, то сразу обратил внимание. Что мне помогло:
      Я установил плагин WP Crontrol — планировщик задач wp cron. Советую установить его сразу, очень хорошее решение.
      После установки, я увидел картину в пиковую нагрузку из примерно 900 идентичных событий, которые как я понимаю касаются изображений.
      Почитайте, возможно она Вам поможет.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *