Перейти к содержимому



Wp_cron.php перегружает процессор хостера.

#1 litrub
litrub
  • Неактивные
  • 3 сообщений
  • Репутация: 0
0

Обновлено 04 ноября 2018 - 16:09  Отправлено 29 мая 2013 - 17:29

Добрый день.
Пытался разобраться с данной проблемой на трех разных форумах. Не получилось. Теперь прошу помощи у вас.
Суть:

Есть блог techseller.ru, который я недавно перенес на хостинг Джино. И начались развлечения...
Посетителей на блоге около 2000 в день. Тема вроде как платная от Гудвина и должна быть оптимизирована. Плагинов в данный момент подключено 10 штук:
Список страниц
Subscribe To Comments
RusToLat
Google XML Sitemaps
Disable WordPress Updates
DB Cache Reloaded Fix
Dagon Design Sitemap Generator
cforms
All In One SEO Pack
Akismet

Нагрузка на CPU почти 10% - ограничивается доступ к сайту.

Посоветовали переименовать файл wp_cron. Сделал - нагрузка упала в три раза. Это, конечно, хорошо, но не правильно.
Подскажите, что может такого делать планировщик, чтобы так грузить хостинг? Как это можно исправить?

 

 

  • 0

#2 html-ka
html-ka
  • Неактивные
  • 455 сообщений
  • Репутация: 82

Отправлено 29 мая 2013 - 17:36

ну как минимум взглянуть на его код...
  • 0

#3 litrub
litrub
    Topic Starter
  • Неактивные
  • 3 сообщений
  • Репутация: 0

Отправлено 29 мая 2013 - 19:17

Вот его код:

<?php
/**
* WordPress Cron Implementation for hosts, which do not offer CRON or for which
* the user has not set up a CRON job pointing to this file.
*
* The HTTP request to this file will not slow down the visitor who happens to
* visit when the cron job is needed to run.
*
* @package WordPress
*/
ignore_user_abort(true);
if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') )
die();
/**
* Tell WordPress we are doing the CRON task.
*
* @var bool
*/
define('DOING_CRON', true);
if ( !defined('ABSPATH') ) {
/** Set up WordPress environment */
require_once('./wp-load.php');
}
// Uncached doing_cron transient fetch
function _get_cron_lock() {
global $_wp_using_ext_object_cache, $wpdb;
$value = 0;
if ( $_wp_using_ext_object_cache ) {
// Skip local cache and force refetch of doing_cron transient in case
// another processs updated the cache
$value = wp_cache_get( 'doing_cron', 'transient', true );
} else {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", '_transient_doing_cron' ) );
if ( is_object( $row ) )
$value = $row->option_value;
}
return $value;
}
if ( false === $crons = _get_cron_array() )
die();
$keys = array_keys( $crons );
$gmt_time = microtime( true );
if ( isset($keys[0]) && $keys[0] > $gmt_time )
die();
$doing_cron_transient = get_transient( 'doing_cron');
// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
if ( empty( $doing_wp_cron ) ) {
if ( empty( $_GET[ 'doing_wp_cron' ] ) ) {
// Called from external script/job. Try setting a lock.
if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time ) )
return;
$doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
set_transient( 'doing_cron', $doing_wp_cron );
} else {
$doing_wp_cron = $_GET[ 'doing_wp_cron' ];
}
}
// Check lock
if ( $doing_cron_transient != $doing_wp_cron )
return;
foreach ( $crons as $timestamp => $cronhooks ) {
if ( $timestamp > $gmt_time )
break;
foreach ( $cronhooks as $hook => $keys ) {
foreach ( $keys as $k => $v ) {
$schedule = $v['schedule'];
if ( $schedule != false ) {
$new_args = array($timestamp, $schedule, $hook, $v['args']);
call_user_func_array('wp_reschedule_event', $new_args);
}
wp_unschedule_event( $timestamp, $hook, $v['args'] );
do_action_ref_array( $hook, $v['args'] );
// If the hook ran too long and another cron process stole the lock, quit.
if ( _get_cron_lock() != $doing_wp_cron )
return;
}
}
}
if ( _get_cron_lock() == $doing_wp_cron )
delete_transient( 'doing_cron' );
die();
Я, к сожалению, в этом слабо разбираюсь.
  • 0

#4 litrub
litrub
    Topic Starter
  • Неактивные
  • 3 сообщений
  • Репутация: 0

Отправлено 30 мая 2013 - 21:09

Жаль...
Оказывается не только я не знаю, как решить данную проблему.
  • 0

#5 BeNi
BeNi
  • Пользователь
  • 122 сообщений
  • Репутация: 55

Отправлено 31 октября 2018 - 19:24

Тема осталась незавершенной... Столкнулся с такой же проблемой - wp cron безбожно грузит сервер POST запросами. Хостер еще не ругался, но при зашкаливании разрешенной  нагрузки сйт теряет функциональность. Посмотрел access.log - за сутки 300 запросов! Это при том, что посетителей немного.

 

Кто может подсказать, как задать ему нужную периодичность запросов?

 

Сначала запретил ему вход через IP. Все равно долбит, хоть и выдает ошибку 403. Отключил его совсем,

прописав в wp-config.phpdefine('DISABLE_WP_CRON', true); Мне кажется это не совсем гуд.

 

Кто может подсказать, как задать ему нужную периодичность запросов? Или может какой другой способ есть?


  • 0

#6 BLIK
BLIK
  • Супермодератор
  • 4 749 сообщений
  • Репутация: 1081

Отправлено 31 октября 2018 - 19:31

Кто может подсказать, как задать ему нужную периодичность запросов? Или может какой другой способ есть?

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

Внимание
Чтобы увидеть этот текст Вам необходимо авторизоваться


  • 2

Качественный хостинг   Тут может быть ваша ссылка.



#7 BeNi
BeNi
  • Пользователь
  • 122 сообщений
  • Репутация: 55

Отправлено 31 октября 2018 - 19:48

@BLIK, спасибо! Завтра попробую разобраться со статьей, позже отпишусь о результатах.


  • 0

#8 BLIK
BLIK
  • Супермодератор
  • 4 749 сообщений
  • Репутация: 1081

Отправлено 01 ноября 2018 - 01:55

@BeNi,Сейчас смотрел видео и попалось еще решение по обновам wordpress, посмотрите:

Внимание
Чтобы увидеть этот текст Вам необходимо авторизоваться


  • 0

Качественный хостинг   Тут может быть ваша ссылка.



#9 WGN
WGN
  • Пользователь
  • 877 сообщений
  • Репутация: 50

Отправлено 01 ноября 2018 - 09:16

Подскажите, что может такого делать планировщик, чтобы так грузить хостинг? Как это можно исправить?

У вас конфликт плагинов идет скорее, попробуйте все отключить и посмотреть, если все норм потом активировать по одному - тем самым найдете конфликтный плагин. Также есть плагин который ищет(конфликтные плагины) точно не помню как называется но в названии есть  "health" 


  • 0


#10 BeNi
BeNi
  • Пользователь
  • 122 сообщений
  • Репутация: 55

Отправлено 01 ноября 2018 - 12:09

Проконтролировал работу сайта.  Обращений wp cron к сайту нет. Плагины работают нормально. Нагрузка на сервер упала существенно, но еще не вечер...

 

wp cron

Blik, спасибо за подсказки. Пока жду - как поведет себя сайт без этого злополучного wp crona. Хотя, если вдуматься - если не ставить задач вордпрессу, то удаление его функций не повлияет на работу сайта. А я их и не ставлю!

 

А вы как думаете?


Сообщение отредактировал BeNi: 01 ноября 2018 - 12:13

  • 0

#11 BLIK
BLIK
  • Супермодератор
  • 4 749 сообщений
  • Репутация: 1081

Отправлено 01 ноября 2018 - 13:41

А вы как думаете?

Удалять не нужно, и отключать полностью обновления тоже не нужно. А вот ограничить чистоту обращений можно, если сильно нагружает сервер, второй вариант с гитхаба вроде как самый подходящий, чтобы не настраивать cron на сервере. 


  • 0

Качественный хостинг   Тут может быть ваша ссылка.



#12 BeNi
BeNi
  • Пользователь
  • 122 сообщений
  • Репутация: 55

Отправлено 01 ноября 2018 - 14:32

У меня на этом хосте настройки cron для моего тарифа нет! Поэтому буду вникать в предложенные BLIKom предложения...


  • 0

#13 BeNi
BeNi
  • Пользователь
  • 122 сообщений
  • Репутация: 55

Отправлено 04 ноября 2018 - 16:09

После отключения wp cron нагрузка на сервер уменьшилась и находится в пределах моего тарифа. Несколько дней наблюдал за работой сайта. Отключение wp cron н сказалось на работе сайта, все функционировает нормально. В принципе можно так и оставить, так как я задачи перед WP практически не ставлю.

Есть еще проблемы с нагрузкой, но это в другой теме...


  • 0

robot
robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 22.5 3 темы, 6 сообщений, 1 балл репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 18 Вне конкурса за определение пользователя месяца

  • Фотография SergiuS85
    #3

    SergiuS85
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография kuztoday
    #4

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #5

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография kolver
    #6

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография mkreine
    #7

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Totti
    #8

    Totti
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография r0mZet
    #9

    r0mZet (rz-style.ru)
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография fedornabilkin
    #10

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru