Боремся с превышением нагрузки на WordPress

Превышение нагрузки на WordPress

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

В прошлый раз нагрузка переваливала за 100, тогда наибольшую нагрузку несла несуществующая страница site.ru/edit, решением стало обработка этой страницы через htaccess, когда сервер сразу знает, что страницы не существует и говорит об этом роботам, то нагрузка значительно меньше, поэтому тогда я справился с ней, сейчас снова нагрузка превышена, в среднем она составляет 52CP в то время как, разрешенный максимум — 50, а при нормальном состоянии всех сайтов ~15 при посещаемости около 5000 хостов в сутки. Сейчас я снова выясню какие страницы делают наибольшую нагрузку и буду принимать решение, что с ними делать.

Итак, заходим в аккаунт Beget и переходим по ссылке журналы, ее картинка в виде открытой тетрадью с карандашом, рядом со свиньей-копилкой, через которую мы оплачиваем хостинг:

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

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

Помогите справиться с нагрузкой. Это же ддос-атака или попытка взлома, подскажите какие страницы каких сайтов или какие файлы делают максимальную нагрузку.

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

После того, как мы включили ведение журнала появится возможность включить скрипт Awstat, введите логин и пароль для доступа, он и будет отслеживать статистику, где-то через сутки мы увидим, что именно грузит наш сайт. Перейти в статистику можно будет на той же странице (журналы).

На главной странице переходим во вкладку «Адрес страницы (Топ 10)». Можно перейти в полную статистику нажав на ссылку «Полный список» в этой таблице, мне пока достаточно этой. Среди адресов страницы ищем «странные» — страницы входа в админку, страницы, которых не существуют, в-общем, страницы, на которые не попадает обычный пользователь, на скриншоте я оставил такие страницы, все остальное закрасил черным:

На страницу /wp-login.php я, конечно заходил, но никак не 10000 раз за месяц, если считать с запасом, то максимум 100 раз, поэтому здесь очевидна попытка взлома. Про страницу /wp-admin/admin-ajax.php я точно не знаю, но предполагаю, что она используется при входе через wp-login, ее тоже нужно оградить от злоумышленников.

Я думаю в таком случае подойдет плагин, который меняет адрес админки.

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

В данный момент меня интересует пункт «Hide», переходим в эту вкладку, ставим галочку и вводим новые названия для всех пунктов:

Теперь, когда кто-то или что-то попытается войти по адресу /wp-login.php он попадет на страницу /not_found. И на сколько я понял, если он будет очень часто заходить на несуществующую страницу, то система его заблокирует, поэтому дополнительно запрещать заходить на страницу /wp-login.php через htaccess я не буду, но посмотрю нагрузку завтра-послезавтра. Позже будет еще один пост, напишу о том как справляется плагин, а также о дополнительных настройках, если они потребуются.

7 комментариев к записи “Боремся с превышением нагрузки на WordPress

  1. Владимир Лапшин

    Это еще что 🙂
    Вот когда начнутся обращения к любой странице с подставновкой в конце «/edit» и сам запрос будет POST, будет еще веселее 🙂 У меня нагрузка и за 250 уходила. 🙂
    Но все закрывается через htaccess, я и доступ к wp-login там же закрыл — теперь сначала надо ввести пароль на уровне сервера (что вообще не создает на него никакой нагрузки), а потом уже на уровне WP.

  2. Роман

    Можно ли пример домена, на котором стоит такая защита. Любой сайт. Есть подозрение что она не работает.

  3. Encode

    Ваш комментарий куда более интересней этой статьи.
    А можно поподробнее как закрыли в htaccess «/edit» ?

  4. Галина Шевалер

    Ситуация один в один!

    Подскажите, пожалуйста каким образом можно обработать через htaccess несуществующую страницу?

    И есть ли другие способы с /wp-admin/admin-ajax.php — приведенный вами мне не подходит, к сожалению.

  5. Ильдар Хакимов Автор статьи

    Вы кэширование включили с помощью wp super cashe? Это очень сильно снижает нагрузку. Если admin-ajax.php запретить, то сайт неправильно будет работать, на сколько я помню.

    Вот тут хорошая статья по защите — pervushin.com/wordpress-login-config-protect.html

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

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