Главная Новости

Высокая нагрузка WordPress на CPU - процессор, сервер и хостинг


Опубликовано: 01.09.2018

Прошел период примерно в 30 дней, в работе сайта больше проблем нет и высокая нагрузка на сервер, процессор больше не наблюдается. Теперь следует рассказать как мне удалось справиться с периодической высокой нагрузкой WordPress на процессор и сервер.

Все началось совершенно спонтанно и с каждым днем ответ сервера становился все более долгим. Затем в один прекрасный момент в панели webmaster Yandex, появилось соответствующее критическое уведомление. В котором был указан долгий ответ сервера практически на 40 — 50 страницах сайта. Все по-порядку.

Содержание статьи:

Высокая нагрузка создаваемая  WordPress сайтом на серверный процессор CPU — основные симптомы этой проблемы

На моем сайте проблема возникала совершенно спонтанно и в разные временные периоды. Толчком 100% нагрузки на CPU сервера становились переходы между страницами сайта. Примерно на 2-й странице, возникал резкий скачек в работе процессора сервера. Хочется заметить, что в этот момент оперативная память практически не имеет колебаний. А количество процессов совершенно незначительно и не должно так пагубно нагружать серверный процессор.

Основные характерные признаки нагрузки, которые встречаются у многих вебмастеров:

Повышение лимита нагрузки процессора на хостинг-сервере. WordPress начал создавать недопустимую нагрузку на CPU. Пиковые значения, жесткая перегрузка процессора на хостинге. Долгий ответ сервера, варьируемое значение колеблется от 5  до 30 секунд. Чрезмерная нагрузка происходит спонтанно, в разные временные периоды. Происходит заторможенность сайта, страницы практически не загружаются или этот процесс проходит очень долго. Сайт в пиковых пределах крашится. WP создает долгий ответ сервера, сайт работает не стабильно. В пиковых скачках CPU, оперативная память работает в штатном стабильном режиме. Количество затронутых и исполняемых процессов в периоды скачков минимальны. Потоковое пакетное обращение  и задействованные соединения на nginx или apache минимальны. Данная аномалия проходит несколько раз в день, в разные промежутки времени. Заканчивается также быстро, как и началась.

Это именно то, что происходило с моим сайтом в течении месяца. Наглядным примером будут следующие изображения:

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

Какие методы я перепробовал в борьбе с критической нагрузкой на CPU

Самое банальное, я грешил на плагины WP и нехватку памяти. Хотя так по-честному, движок использует всего 16 мб памяти из допустимых 512 мб которые я выделил. Что собственно я пробовал:

Провел полное обновление Debian, затем почистил всю систему. Удалил 99% сохраненных ревизий баз данных на VestaCp. Раз двадцать просматривал конфигурационные файлы в VestaCp на наличие ошибок. Нашел в почтовом сервере Exim большое количество системных логов (полностью удалил). Проверял сайт на наличие вирусов (отсутствуют). Делал трассировку до сайта, проверял скорость интернет соединения. На сайте отключил сохранение ревизий записей, большего на сайте не предпринимал. Сайт оптимизирован под 98% смысл его проверять.

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

В чем собственно заключалась проблема чрезмерной нагрузки WP на CPU, и как я ее решил

Проблема заключалась в ошибке WP Cron (крона). Месяца четыре назад  я устанавливал плагин, который запрещает обновляться движку, темам и плагинам. Первым звонком по моим пониманием, были ошибки в серверных логах сайта адресованные wp-cron.php. Ошибка заключалась в выделении памяти на процесс, а точнее нехватки памяти.  Когда я вспомнил про эту ситуацию, то сразу обратил внимание.

Что мне помогло:

Я установил плагин  WP Crontrol  — планировщик задач wp cron. Советую установить его сразу, очень хорошее решение. После установки, я увидел картину в пиковую нагрузку из примерно 900 идентичных событий, которые как я понимаю касаются изображений.

Самое простое решение обнулить все события wp cron до изначального состояния, делается это в functions.php. Достаточно вставить в самом начале файла под <?php следующую строку update_option(‘cron’, » «); . Сохраняем и заходим на сайт, достаточно отрыть пару страниц. После этого возвращаемся в файл и удаляем эту строку.

В результате все 900 событий пропали, сайт начал спокойно работать. Серьезных нагрузок на сервер и долгого ответа больше нет. Единственное от чего мне пришлось избавиться, это от запрета на обновление. После этого все проблемы решились. Вот как выглядят показатели нагрузки на данный момент:

Надеюсь эта статья Вам пригодиться и поможет. Если возникнут вопросы пишите в комментариях или в личку.

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

Спасибо, что читаешь Nicola Top

rss