Меню Закрыть

Сайт на WordPress максимально нагружает сервер


Представьте такую картину: сайт на WordPress практически не работает на хостинге из-за предельной нагрузки на CPU. Причину медленной работы или, вернее сказать, полной невозможности загрузки сайта, я узнал от техподдержки своего хостинга Джино. Мне сообщили, что мой аккаунт периодически превышает допустимое ограничение по нагрузке на CPU и в период превышения производится автоматическое ограничение ресурсов для стабильной работы сервера.

Сайт на WordPress максимально нагружает сервер

Чтобы посмотреть статистику по нагрузке можно зайти в контрольную панель хостинга в раздел Статистика → Использование ресурсов. Там я увидел, что нагрузка, которую создает мой сайт wpwm.olerant.ru на CPU, максимальная, много ошибок 503, за один час 148 запросов к web-серверу, огромный трафик:

График нагрузки

А на вкладке Графики нагрузки наблюдается солидное превышение жесткого лимита:

Превышение жесткого лимита

Почему это происходит?

Причин может быть несколько. Для примера, опишу свою. Я подозреваю, что в моём случае это происходило по вине поисковых роботов. Дело в том, что мой сайт годом ранее попал под АГС Яндекса. Принимаемые меры вывода не привели к положительному результату и я решил пойти своим путем. Я поставил сайт на Джумлу, затем перенес на Вордпресс. Проиндексировались все варианты и, соответственно, стало много 404-х ошибок. На Вордпресс-сайте в тот момент не было ничего лишнего, 9 плагинов установленных, да и страниц относительно немного, но, как видите, сервер он грузил по полной программе.

Нагрузка на сервер

 

Варианты устранения проблемы

1. Отключить wp-cron.php

wp-cron.php — это скрипт, отвечающий за выполнение различных задач. Основные из них:

  • проверка обновлений WordPress и плагинов;
  • запланированная публикация постов;
  • рассылка уведомлений о новых комментариях и прочих событиях;
  • запуск плагинов, таких например как Akismet для фильтрации комментариев на наличие спама;
  • оповещение сторонних сервисов о публикации нового материала.

Если выполнение этого файла вызывает нездоровую нагрузку на сервер — можно отключить эти задачи. Для этого в файл конфигурации WordPress wp-config.php добавляем строку:

define('DISABLE_WP_CRON', 'true');

Добавить её можно там, где есть другие строки с define.

Второй вариант решения — в самом файле wp-cron.php закомментировать строку:

//ignore_user_abort(true);
  • В этом коде применен один из способов временного отключения (закомментирования) строки в виде двух слэшей (//).
  • Для успешного отключения wp-cron.php необходимо выполнить оба варианта!

2. Использовать плагин heartbeat-control

Скачайте плагин по адресу
https://wordpress.org/plugins/heartbeat-control/
Этот плагин контролирует полезное дополнение WordPress Heartbeat API, которое, в свою очередь, может увеличить потребление CPU и замедлять ваш сайт. Сказано в общих чертах, подробную информацию о плагине и фиче можно без труда найти в Сети.

3. Увеличить интервал между запросами поисковых ботов

Для Google данные настройки производятся в панели Google Webmaster:
//www.google.com/intl/ru/webmasters
 Выберите нужный сайт на панели инструментов и нажмите Настройки (изображение шестереночки, справа вверху). В разделе Частота сканирования выберите Ограничить максимальную скорость сканирования Google и установите ползунок в положение Низкий:

Установите ползунок в положение Низкий

Новая скорость сканирования будет действовать в течение 90 дней, затем все восстановится автоматом, либо это можно сделать ранее и самостоятельно. В Яндексе же для снижения нагрузки на сайт и ограничения активности поискового робота можно использовать директиву Crawl-delay, которая прописывается в файле robots.txt. Она задает поисковому роботу минимальный период времени (в секундах) между окончанием загрузки одной страницы и началом загрузки следующей. Crawl-delay поддерживается Яндексом, но не учитывается другими поисковиками, поэтому, если Вам ну уж очень важна эта директива, можно создавать несколько вариантов записей в файле robots.txt для разных поисковых ботов. Примеры записи Crawl-delay с разными таймаутами:

User-agent: Yandex 
Disallow: /folder/ 
Crawl-delay: 2 # задает таймаут в 2 секунды
User-agent:Yandex 
Disallow: /folder/ 
Crawl-delay: 4.5 # задает таймаут в 4.5 секунды

Директиву Crawl-delay необходимо добавить непосредственно после директив Allow и Disallow. Устанавливать слишком большой таймаут (например, до минуты), наверное некорректно. Потому, что, во-первых, теоретически, Вы можете слишком ограничить частоту обращений для индексации каждой страницы, то есть значительно замедлить индексацию сайта. А во-вторых нет гарантии, что робот обратит внимание на такие ваши рекомендации. Выбирайте для себя оптимальное значение в пределах разумной достаточности. Какое именно? Это зависит от параметров сайта.

4. Включить кэширование на сайте

Из большого набора инструментов для кэширования можно отметить плагин WP Super Cache. Скачать его можно на официальном сайте
https://wordpress.org/plugins/wp-super-cache/ 
Установка стандартная. Плагин способствует сокращению времени загрузки сайта в разы за счет создания кэш-копий, то есть копий просмотренных страниц, чтобы не загружать их по несколько раз при следующем открытии, а лишь подгружать с обновлениями. За счет этого снижается нагрузка на сервер. Он имеет широкие возможности для настройки. Настроек достаточно, но, главное, в настройках нужно включить кэширование и выставить рекомендуемые параметры. Для включения кэширования так же можно использовать файл .htaccess, добавив такой код:

# Включаем кэширование файлов
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> 
Header set Cache-Control "max-age=2592000" 
  • flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf — это типы файлов, которые попадают под кэширование.
  • max-age — указание время хранения файлов в кэше в секундах.

5. Блокировка IP — адресов

На сайтах иногда могут появляться пользователи, нарушающие правила, спамеры, хамовитые, дерзкие ребята, невзлюбившие ваш блог и т. д.  Их действия, в какой-то степени, могут оказывать влияние на скорость загрузки страниц сайта в сторону замедления. Блокировать IP адреса непрошеных пользователей может помочь плагин Best WP Security. Второй вариант выполнения этой задачи — размещения следующего кода в файле .htaccess:

# блокируем пользователя по IP 
order allow,deny 
allow from all 
deny from 114.205.539 
deny from 65.531.901 
deny from 127.690.909 
deny from 125.810.326 

Для добавления нового IP дублируйте строку deny from, заменяя IP адреса.

6. Ручная оптимизация сайта

  1. Отключить лишние плагины, проверить корректность работы активированных. Отключайте плагины сайта по очереди и следите за его работой. Обнаружив проблемный плагин, попробуйте его обновить или установить стабильную версию, или замените аналогом, с которым не возникает проблем.
  2. Удалить посторонние и «левые» скрипты. Здесь могут оказать помощь различные антивирусные утилиты и качественный легальный антивирус, например, KIS. Можно попробовать проверку сайта на вирусы онлайн, набрав в поисковике соответствующий запрос.

P.S. В результате выполнения всех или нескольких пунктов в большинстве случаев проблема должна исчезнуть. Но полной гарантии никто дать не может, так как к каждому сайту нужен индивидуальный подход.
Желаю вам стабильной работы ресурса, позитива и прекрасного настроения!


1 комментарий

  1. Рамадан

    Вот вот. Я тоже вначале сайт на Joomla сделал. И были проблемы с индексацией: некоторые разные страницы разные поисковики не индексировали. Поскольку сайт потом почти статический стал, перевёл его на простой HTML без какой-либо CMS.

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

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

         Яндекс.Метрика