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


Наверное, нет такого веб-мастера, который ни разу не получал бы от хостинг-провайдера предупреждение за превышение допустимого уровня расхода ресурсов сервера/нагрузки на процессор. Не обошла эта беда и меня. Письмо счастья прилетело, как всегда, ночью. 21 марта началось безумие на моем аккаунте. Средняя нагрузка достигала 25% при максимально допустимых 5% в течение суток. С сайтом ничего не делалось - значит причина внешняя. Изучение логов 7 сайтов, размещенных на аккаунте, показало небывалую активность поисковых роботов, особенно Яндекс бота (YandexBot) - более 10000 запросов по одному из сайтов в сутки. С одной стороны это хорошо, что Яндекс активно индексирует сайт, с другой - чревато блокировкой аккаунта за перегруз. Для начала был пополнен список заблокированных поисковых ботов в файле .htaccess. Их там было порядочно заблокировано и до этого, но теперь я внес всех, кого увидел в логах, кроме GoogleBot и YandexBot. Как и ожидалось особого эффекта это не принесло. Было написано письмо в саппорт Яндекса, с просьбой посоветовать, как успокоить разбушевашегося робота. Ответ был получен - рекомендовалось установить параметр Crawl Delay в 5 сек в robots.txt и поставить запрет на индексирование тегов статей. Что и было сделано. И это было ошибкой, которую не могу расхлебать уже вторую неделю. Установка параметра Disallow: /tag в robots.txt выбила из индекса Яндекса 2/3 страниц и посещаемость после 2 апа Яндекса упала в 2 раза. При этом нагрузка на сервер практически не уменьшилась.

Важно: Нормальной/штатной нагрузкой на CPU считается нагрузка в 3% и менее, если на графике вы наблюдаете постоянную нагрузку в 3% и более это серьезная причина для оптимизации скриптов вашего аккаунта.

Важно: Долговременная (более суток) нагрузка на CPU более 5% может привести к блокировке вашего аккаунта со стороны хостинг провайдера Hostland.RU за нагрузку на сервер.

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

На скрине видно падение нагрузки на процессор после установки плагина кэширования 25 марта.

Ситуация становилась почти тупиковой и я начал интенсивно читать все, что есть в интернете на эту тему. Решение оказалось простым и изящным, как все гениальное. Я увидел совет - включить кэширование сайта сторонним плагином. В списке плагинов WP я увидел ZenCache (серверное кэширование на базе Zend Framework), с очень хорошими отзывами. Да и в самом описании плагина была обещана небывалая эффективность и снижение нагрузки до уровня "замороженного сайта" (freeze site). Терять мне было нечего и плагин был установлен и настроен. Настройка совсем несложная, русского нет, но можно оставить по умолчанию или перевести онлайн переводчиком сразу всю страницу. Единственное, что я изменил - это время хранения кэша - с 7 дней по умолчанию поставил 2 часа. Хотя разработчик утверждает, что даже время в 60 секунд резко сократит нагрузку на сервер хостера.

Zend

Немного теории, что дает кэширование сайта:

  • у пользователей сайт загружается гораздо быстрее;
  • уменьшается количество запросов к серверу, вследствие чего уменьшается нагрузка на него;
  • многие ресурсоемкие запросы к БД не выполняются каждый раз заново, а просто берутся из кэша и возвращаются запросившему их скрипту, благодаря чему снижается нагрузка на базу данных;
  • если на странице нету никаких изменяющихся данных, то закэшировав ее целиком вы добьетесь того, что не будет грузиться даже сам огромный Zend Framework с кучей библиотек, хелперов, моделей и контроллеров, а браузеру отдастся сразу же готовый html-код.

На скриншоте видно, как резко упала нагрузка на процессор хостера до разрешенных 3-4%. Через несколько дней после контроля нагрузки и стабилизации ситуации из robots.txt были удалены запреты для ботов на индексацию тегов и я сейчас наблюдаю медленное возвращение посещаемости по этим запросам. Как говорится, век живи - век учись.

Кстати я применил еще одну фишку для оптимизации запросов к сайтам, но об этом я напишу в следующей записи, чтобы не путать все в кучу.


Читайте также:

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

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

Введите цифру (Enter the number) * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.