Как снизить нагрузку wordpress на сервер
Увеличилась нагрузка на сервер хостинга, как её уменьшить?
В этом месяце неожиданно нарисовалась очередная проблема с сайтом. Совсем недавно у меня скопировали сайт, а сейчас увеличилась нагрузка на сервер хостинга TimeWeb. Норма нагрузки была превышена в 10 раз.
Такой поворот событий для меня не был неожиданностью и возможную причину знал заранее. После запроса логов у хостера догадки подтвердились. Ко всем сайтам на аккаунте подбирались пароли к админке WordPress.
Вход в админку у меня был стандартный и дополнительно не был защищен. Подход банальный, если ничего не случилось, зачем что-то делать? Подход резко изменился, когда хостинг ТаймВеб за нестабильную работу сервера вынужден (он бы не прочь, но я его вынуждаю ;)) приостановить обслуживание моего аккаунта.
Брутфорс – это и есть подбор пароля и логина путем перебора множества вариантов. В результате таких манипуляций растет количество запросов и увеличивается нагрузка.
Программ для взлома акканутов сейчас в сети полно и любой школьник по приложенной инструкции без особых проблем может почувствовать себя хакером. Для защиты админки в этом случае достаточно провести несложные действия.
Как уменьшить нагрузку на сервер с WordPress?
Самые вкусные файлы для взломщиков wp-login.php и wp-config.php. Для уменьшения нагрузки на сервер им необходимо уделить особое внимание, а для защиты админки следует присмотреться к следующим способам.
Первый способ. Закрыть полный доступ к wp-login.php для всех IP адресов, кроме вашего. Для защиты достаточно внести изменения в файл .htaccess. То есть доступ к админке будет разрешен только вам, у остальных будет выкидываться ошибка.
Этот очень простой способ для меня не самый удобный. Дело в том, что при подключении к интернету мне дается новый IP и для входа в админку сайта требуется сначала зайти в админку хостинга, внести мой новый IP в .htaccess и только потом перейти на блог.
Второй способ. Спрятать файл wp-login.php. Этот способ оказался для меня идеальным.
1. Переименовываем название файла wp-login.php в, например, 45jkdsf234.php. Искать файл нужно в корне сайта, корректировать либо через админку хостинга либо через ftp-клиента.
2. Заменяем все встречающиеся слова wp-login.php на переименованные, в моем примере на 45jkdsf234.php. Изменения нужно внести в старый файл wp-login.php, который сейчас называется 45jkdsf234.php и в wp-includes/general-template.php.
Теперь вход в админку будет осуществляться не по адресу ваш-сайт/wp-login.php, а по адресу ваш-сайт/45jkdsf234.php.
3. Добавить в .htaccess перед # END WordPress такой код:
<Files wp-login.php>Order Deny,AllowDeny from all</Files> |
Внесение этого кода ограничивает полный доступ к уже несуществующему файлу wp-login.php. Это необходимо для того, чтобы при продолжении обращений к этой странице не создавалась на сервер нагрузка.
4. Дополнительно не помешает ограничить доступ к файлу wp-config.php. При настроенном блоге он требуется крайне редко, поэтому его тоже закрываем от всех. В .htaccess добавляем такой код:
<Files wp-config.php>Order Deny,AllowDeny from all</Files> |
В результате у меня получился такой .htaccess:
Третий способ. Использовать плагин Login LockDown, который предотвращает попытки подбора пароля. Установка плагина банальная, поставил и забыл. По умолчанию имеется 3 попытки войти в админку в течение 5 минут, при неудачных попытках происходит блокировка по IP на 1 час.
Мне очень не хотелось ставить Login LockDown, обычно я подбираю пароль к админке раза с 5-го. Но что сделаешь, придется тренировать память, лучше так, чем постоянные взломы.
Вот так выглядит график нагрузки до и после подбора пароля:
Период взлома отчетливо виден по резким скачкам графика.
Что не помешает сделать вебмастеру для снижения нагрузки WordPress на сервер
По максимуму обезопасить админку позволит следование базовым правилам по соблюдению безопасности:
- На админку стоит поставить сложный пароль;
- Поменять логин admin на другое название;
- В FTP-клиентах не хранить пароли и логины;
- Регулярно делать back up файлов вордпресс и базы данных mysql. Про создание автоматической резервной копии базы читайте здесь.
Если после проведения всех работ нагрузка на сервер остается по-прежнему повышенной и не связана со взломом, значит нужно оптимизировать код веб-проекта или искать вредоносный скрипт.
В следующий раз расскажу о сказочном способе максимального ускорения загрузки блога, так что подписывайтесь на обновления в форме ниже под статьей и получите всё сладкое самыми первыми.
На самое сладкое видео с заманчивым названием:
С уважением, Дмитрий Байдук
Поделиться ссылкой с друзьями
Похожие материалы:
netbu.ru
Как снизить нагрузку сайта на сервер хостинга на примере Timeweb
Столкнулся с проблемой, когда хостинг Timeweb написал сообщение о том, что они обнаружили, что мой аккаунт оказывает чрезмерную нагрузку на сервер и, что, возможно, мой сайт стал более посещаемым или в работе сайта что-то пошло не так. На сервере виртуального хостинга чрезмерная нагрузка, оказываемая одним аккаунтом, может негативно сказаться на работе всего сервера, поэтому эту проблему важно оперативно решить.
Думал, что это хостинг таким образом пытается поднять мне тариф и больше заработать, но почитав их рекомендации в том же тикете я смог самостоятельно справиться с нагрузкой и выяснить её причины.
Итак вот такое письмо мне пришло от техподдержки, если читаете эту статью вам наверно пришло похожее:
Сначала я посмотрел нагрузку, подумал, что посещаемость действительно выросла и дело в этом. К тому же на хостинге был не один сайт а около 10:
Чтобы исправить ситуацию перешел в раздел "Тариф" и увеличил такие параметры:
- Лимит нагрузки на CPU сервера;
- Лимит нагрузки на базы данных.
Увеличивать надо так, чтобы на графике нагрузки не было оранжевых точек и линий. После этого отписал в техподдержку что прибавил лимиты и на время забыл о проблеме.
Через какое то время (может месяц) увидел еще большую нагрузку на сервер Timeweb (на скриншоте выше). Так как посещаемость за это время не поменялась пропорционально нагрузке, решил подойти к проблеме с другой стороны и провести рекомендуемые хостингом проверки. А именно диагностировать с помощью анализа логов доступа к сайтам. Для этого в разделе "Логи" для каждого сайта я включил лог доступа и лог ошибок:
Логи сохраняются в корневой директории каждого сайта. Логи своего блога я проверил и ничего сверхъестественного не нашел, кроме попыток взлома админки сайта ботами. Я решил проверить посещаемость статей на сайтах в админке и на одном из сайтов увидел невероятное количество просмотров одной из статей. Начал смотреть логи этого сайта и вот что увидел в логах доступа:
Одна из статей часто посещается с похожего диапазона айпи адресов, причем за сутки 2588 таких посещений. Сайт этот регионального отделения Партии Великое Отечество и как вы думаете откуда эти айпи адреса? Вот откуда:
На скриншоте логов я выделил ошибку 403, это уже после принятия мер. Чтобы убрать доступ с этих ip я прописал в файле .htaccess в корне этого сайта следующий код (звездочками скрыл адрес сайта):
Order allow,deny allow from all Deny from 91.200.12. 91.200.12.74 46.118.157.125 91.200.12.168 91.200.12.133 144.76.23.176 146.185.223.111 46.118.153.31 203.188.254.110 146.185.223. Redirect 301 /wp-login.php https://*******.jpgЯ перекрыл доступ ко всему сайту с указанных адресов и диапазонов и кроме этого, тем кто пытается подобрать пароль от админки вордпресс, предложил взглянуть вместо этого на картинку по ссылке на другом сайте (надеюсь у них я нагрузку сильно не увеличил).
Кроме этого спам боты постоянно создавали новые темы на форуме, нужно убирать публичные права создания тем форума. Но в моем случае форумом особо никто не пользовался и я его просто отключил на сайте.
Далее, чтобы в админку перестали ломиться боты, на сайтах на Joomla! я установил плагин RicheyWeb - AdminExile из JED, который вместо открытия страницы http://адрес сайта/administrator посылает вас смотреть картинку на другом сайте,а вход происходит по адресу http://адрес сайта/administrator?ваш_ключ:
Для сайтов на Wordpress я установил плагин Protect WP-Admin, меняющий адрес входа в админку:
И плагин WP Cerber Security, позволяющий автоматически блокировать айпи после указанного количества неудачных попыток входа в админку:
В итоге всех вышеперечисленных действий, нагрузка на сайт выглядела вот так:
Как видите проблема исчерпалась. На данный момент прошло несколько месяцев - с нагрузкой всё в норме. Надеюсь эта статья поможет вам самостоятельно справиться с чрезмерной нагрузкой на ваш сервер, или сервер хостинга Timeweb. Этим хостингом я очень доволен, пользовался несколькими, в итоге перевел все сайты на него.
workandrelax.ru
Как уменьшить нагрузку WordPress на хостинг
В практике веб-мастера может случиться такой случай, что ему пишет хостер и просит убраться прочь с хостинга или уменьшить нагрузку или же заплатить за более дорогой тариф. Стоит отметить, что система WordPress является достаточно требовательной к ресурсам хостинга, то есть она изрядно потребляет и оперативной памяти, и процессорного ресурса, поэтому вероятно, что письмо от хостера пришло не случайно.
Проблема нагрузки блога на хостинг может возникнуть или если у Вас достаточно посещаемый блог, или он плохо оптимизирован, или если хостинг плохой. В любом случае можно попытаться оптимизировать свой блог, уменьшив его нагрузку на хостинг. Как это сделать - читайте дальше.
1. Отключение ненужных плагинов
Очень часто именно плагины осуществляют значительные нагрузки на сервер. Пересмотрите установленные в вордпрессе плагины и отключите ненужные и не очень нужные. Например, плагин Hello Dolly, который входит в стандартный комплект поставки Вордпресса, а также появляется при обновлении системы. Он совсем не нужен, поэтому его следует отключить и удалить.
2. Оптимизация php-кода
Далее для уменьшения нагрузки я бы посоветовал оптимизировать php-код. Дело в том, что в шаблонах Вордпресса содержится лишний или нерационально прописанный код, изменив который можно уменьшить число операций, выполняемых движком, и таким образом уменьшится нагрузка.
Как это сделать - читайте в статье Оптимизация блога на WordPress (пункт 2 - Оптимизация кода WordPress).
3. Оптимизация базы данных MySQL
Чем больше запросов осуществляет Вордпресс к базе данных - тем больше будет нагрузка. Особенно большой она может быть в момент написания Вами статьи - пока Вы пишете текст, система периодически сохраняет резервные копии, а это кроме нагрузки на хостинг еще и увеличивает объем самой базы данных.
Как отключить автосохранение и таким образом уменьшить нагрузку на хостинг - читайте в статье Оптимизация базы данных WordPress.
4. Плагин WP Super Cache
Этот замечательный плагин уменьшает нагрузку на хостинг путем кэширования (сохранения html-версий страниц). Логика его работы заключается в том, что система может отобразить посетителю уже кем-то просмотренную сохраненную (закешированную) страницу, а не формировать каждый раз новую, выполняя php-код и скрипты.
Скачать плагин WP Super Cache можно отсюда.
Относительно настроек плагина советуется отметить те, которые обозначены как Recommended. На данном блоге, например, настройки выполнены так:
При настройке данного плагина потребуется обновить файл .htaccess, поэтому на время настройки или выставьте на него права доступа 777, или же внесите предложенные плагином настройки к нему вручную. Также для нормальной работы плагина на папку wp-content/cache нужно будет выставить права 777 на постоянной основе
Это не единственный плагин, который делает кэширования, есть и другие (например, Hyper Cache, MaxCache). Я много с ним перепробовал, и больше всего мне понравился именно WP Super Cache.
Если ничего из вышеперечисленного не помогает, а блог высокопосещаемый и развивается дальше - то возможно уже настала пора задуматься о VPS или собственном сервере 😕
seolife.in.ua