Немного повторюсь. Была ситуация с нестандартно растущей нагрузкой. Например, при 900 пользователях с 1600 просмотрами (в день) нагрузка меньше, чем при 400 пользователях с 600+ просмотрами. Не совсем ясная ситуация.
Был задан вопрос в техподдержку хостинга (с сайтом ничего не делали, кроме публикаций). В итоге, они ответили следующее:
«В логах сервера зафиксировано огромное количество следующих записей: 31.31.196.168 — — [22/Feb/2018:01:09:54 +0300] kmvexpress.ru POST /wp-cron.php?doing_wp_cron….
…
Судя по всему, нагрузка на CPU возросла в связи с длительным выполнением Cron заданий, которые настроены непосредственно в CMS вашего сайта.
…
Также наблюдаем большое количество записей следующего вида: 31.180.237.114 — — [21/Feb/2018:18:57:41 +0300] kmvexpress.ru POST /wp-admin/admin-ajax.php HTTP/1.1 200 105…
…
Скрипт admin-ajax.php выполняет продление пользовательской сессии WordPress. В данном случае рекомендуем отключить указанный скрипт.
»
По итогу сделал 2 глобальных действия:
1. В header.php добавил следующий код:
add_action( ‘init’, ‘my_deregister_heartbeat’, 1 );
function my_deregister_heartbeat() {
global $pagenow;
if ( ‘post.php’ != $pagenow && ‘post-new.php’ != $pagenow )
wp_deregister_script(‘heartbeat’);
}
2. Дописал в wp-config.php строку:
define(‘DISABLE_WP_CRON’, true);
параллельно в планировщике хостинга указал команду:
wget -q -O — http://kmvexpress.ru/wp-cron.php?doing_wp_cron > /dev/null 2>&1
с шагом в 10 минут. После этого все запланированные записи начали становиться Просроченными. Техподдержка хостинга посмотрела логи и открестилась, у них cron работает. Добавил плагин WP Missed Schedule Posts, который раз в 15 минут мониторит и публикует все со статусом «Просрочено». Костыль помог публиковать записи с небольшим опозданием.
По поводу других шагов по оптимизации:
1. В .htaccess заблокированы некоторые «спамовые» IP, которые создавали большое количество запросов. Перекрыт MegaIndex, который не вылазил с сайта и т.д.
2. В robots.txt прописаны правила «можно/нельзя» для разных поисковиков. Там же указан Crawl-delay с параметром 40.
3. Установлены плагины:
— W3 Total Cache — для кэширования, минификации и т.д.
— miniOrange Limit Login Attempts — для устранения проблемы с перебором паролей и постоянным «ломлением» в админку.
— Wordfence Security — в качестве фаервола и защиты от возможных вирусов и т.д.