Найти тему
AdminVPS

Причины превышения допустимой нагрузки на сайт

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

Есть два основных способа устранения – покупка дорогого тарифа, которая не всегда оправдана, и самостоятельная оптимизация сайта.

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

Нагрузка на сайт: что это значит и почему важно за ней следить

Нагрузка на сайт представляет собой параметр, определяющий потребление мощности хостинга. При работе с сайтом посылаются запросы на сервер, где задействуются оперативная память (ОЗУ) сервера, его дисковое пространство и мощность процессора. Следовательно, нагрузка в процентном соотношении показывает, как активно расходуется мощность вашего сервера.

Хостинг круглосуточно отслеживает потребление ресурсов, поэтому, если максимально допустимый лимит превышен – вас уведомят письмом по электронной почте. После 2-3 предупреждений о росте нагрузки хостер отключает ваш сайт для стабильной работы других ресурсов, размещенных на том же сервере хостинга.

Заблокированный сайт не создает нагрузку на хостинг потому что он просто не работает. А это уже сказывается на бизнесе (если сайт коммерческий) и ведет к потере клиентов.

Оптимизация нагрузки снизит использование мощностей сервера и позволит сэкономить деньги на приобретении дорогого тарифа. Но не стоит действовать «наугад» — так вы только усугубите проблему. Для начала необходимо разобраться с происхождением сбоев.

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

Внешние факторы роста нагрузки на хостинг:

1. Поиск уязвимостей сайта. Внешние атаки примечательны тем, что боты сканируют сайт на уязвимости и «чувствительные» зоны, через которые потом могут его взломать и затормозить работу, увеличивая потребление ресурсов хостинга. Рост нагрузки отличителен работой внешнего сканера, т.е. на сервер одновременно отправляется большое количество запросов методом POST.

2. Использование вредоносного ПО для взлома админпанели. Одним из наиболее популярных методов – подбор комбинации логин/пароля по словарям. Простые сочетания log/pass по типу admin/admin взламываются на «ура». Поэтому обязательно установите сложный пароль к панели администратора. Процесс брутфорса примечателен запросами методом POST, итог – превышение нагрузки на хостинг, из-за чего возможна блокировка вашего сайта.

3. Спам-рассылка.

-2

Слабая защита сайта – брешь, через которую хакеры отправляют спам-сообщения, нагружая сервер. Большинство ботов с легкостью обходят стандартную капчу, поэтому нужно использовать более защищенные варианты, например, Google Recaptcha2.

4. Процесс индексации. Все страницы сайта, которые можно найти в поисковых системах, находят в индексе этих поисковых систем. Периодически роботы поисковиков проходят по страницам еще раз на предмет наличия изменений на ваших страницах, это называется “переиндексация”. Но когда роботы одновременно парсят весь сайт, а не отдельные страницы, это увеличивает нагрузку на хостинг в 2-3 раза. Просто так массовая переиндексация не происходит, такой запрос могут отправить злоумышленники, если нашли “дыры” в вашем сайте. При таком процессе также закономерно происходит рост нагрузки на хостинг.

5. Парсинг информации с сайта. Теперь "граббингом" занимаются специальные программы – боты. Они одновременно просматривают все страницы сайта, и копируют оттуда всю информацию. Потом на основе данных создаются клоны, фишинговые сайты. Если вы попали в поле зрения таких программ, тогда скраббинг и граббинг вашего сайта будет происходить регулярно. Это существенно нагружает хостинг и увеличивает потребление мощности.

6. Импорт информации, выгрузка товаров в автоматическом режиме. E-commerce сегмент использует специальное программное обеспечение для автоматизации некоторых процессов, например, выгрузки товаров на платформы по типу «Яндекс.Маркет» или PROM. ПО применяют новостные издания для импорта информации из RSS источников. При этом в 60% случаев контент не статичный – загрузка таких файлов является причиной высокой нагрузки.

7. Продвижение сайта ссылочной массой.

-3

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

8. Использование вашего сайта в роли «троянского коня». Внешний фактор примечателен уязвимостью файла xmlrpc.php. применяя эту брешь, хакеры с помощью вашего ресурса атакуют других. Особенно часто эта проблема встречается у владельцев сайтов, использующих старые версии WordPress.

9. DDOS или резкий скачок посещаемости. Оба варианта имеют несколько похожие свойства. Но все же весомые отличия имеются. В первом случае атака на сервер или хостинг осуществляется для взлома при помощи «компьютеров-зомби», а во втором – потребление мощности растет из-за наплыва посетителей. Для защиты от DDOS атаки используются инструменты, проксирующие трафик. Утилиты представляют собой сетевой монитор, который отслеживает подозрительные запросы и блокирует их. Рост органического трафика, т.е. на сайт переходят именно пользователи – успешный результат индексации поисковым роботом и ранжирования. Но посещаемость может увеличивается ботами. Поэтому, как в случае защиты от DDOS, необходимо использовать проксирующий фаерволл.

Определить происхождение трафика несложно – нужно изучить логи, проанализировать запросы, особое внимание обратить на GET и POST. Большинство хостингов поддерживают SSH, что упрощает инспекцию трафика и предоставляют полную информацию о ключевых точках входа. Возможно, увеличенное потребление спровоцировала неправильная работа скриптов – анализ логов даст информацию насчет этого.

Внутренние факторы роста нагрузки на хостинг.

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

1. Повышенное использование процессора базой данных MySQL и Apache. Обычно запрос на данные из БД выполняются 2-3 миллисекунды, если время увеличивается до 0,5 секунд, тогда MySQL создает сильную нагрузку на CPU, дисковое пространство. Если проблема именно в этом и хостер ас об этом предупредил, то вы можете запросить логи у хостинга и подчистить базу данных от ненужной информации. Количество Веб-серверов Apache увеличивает потребление мощности CPU из-за передачи графики, статики, т.е. информации, которая хранится непосредственно на хостинге. Такой нюанс обусловлен особенностями архитектуры Apache – за один запрос отвечает только один поток.

Ваш сайт содержит много данных в виде графиков, диаграмм. Для его обработки веб-сервер запросит значительный объем ресурсов процессора и дисковой системы. Решение этой проблемы заключается в Nginx. Он работает на основе асинхронной архитектуры, способной обрабатывать от 10 запросов одновременно одним процессом. Это упрощает работу с графикой и статистическими данными, снижает нагрузку на хостинг. Проблема состоит в том, что не каждый хостинг поддерживает связку Apache/Nginx. Но есть решение – переход на VPS.

2. Отсутствие оптимизации JavaScript кода и стремительно увеличивающаяся БД.

-4

Архитектура проекта оказывает непосредственное влияние на работоспособность сервера. Проектирование без учета оптимизации может усложнить для сервера даже самую простую команду.

Это же касается не оптимизированного кода JavaScript. Он может использовать устаревшие команды доступа и вызова БД, которые используют много ресурсов. Скрипты могут работать неправильно. Все ошибки, которые возникают в момент запуска кода, сохраняются в логах и не появляются у пользователей. Но есть один важный нюанс – рост количества ошибок нагружает сервер. Страницы ресурса, насыщенные блоками с информацией, одновременно отсылают десятки запросов на получение одних и тех же данных, и выполнения одинаковых функций. Такая проблема часто встречается в проектах на старых версиях платформ с устаревшими плагинами.

3. Вирусы на сайте.

-5

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

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

Как определить причину увеличения нагрузки на хостинг?

-6

Качественный мониторинг определит, что конкретно «съедает» производительность сервера и перегружает сервер. Наиболее популярные следующие методики, но они применяются в комплексе:

1. Анализ логов. Подробное изучение позволит узнать, какие поисковые запросы приводят пользователей, что обеспечивает просмотры. Логи покажут IP адреса, отправляющие наибольшее количество запросов на ваш хостинг.

Анализ большинства логов проводится через сторонние сервисы по типу Webalizer, но некоторые логи придется вам изучать самостоятельно. Рост потребляемой мощности сервера может возрастать из-за поисковых роботов – анализ логов вам это покажет. Они же покажут, что, возможно, проблема кроется в запуске ресурсоемкого скрипта.

2. Аудит кода. Предполагает тщательный анализ внутреннего кода сайта. Методика трудоемкая, необходимо подробно разобрать базу скриптов, удалить или переработать определенные строки.

Суть заключается в том, чтобы обнаружить устаревший и неиспользуемый код, который сильно «режет» производительность. Здесь же изучается SQL – объемные инструкции доступа иногда получается заменить расширенными запросами с однострочным кодом.

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

Для анализа проблемы с производительностью сервера необходимо провести глубокую проверку на вредоносный код. Нередко именно он является одной из основных причин превышения лимита производительности. Можно использовать абсолютно бесплатную утилиту AI-BOLIT, она покажет наличие вредоносного кода и поможет в очистке от него. Если его не обнаружено, тогда проводится профилирование JavaScript модулями xhprof, xdebug. Нелишним будет установка защиты от заражения – лучше воспользоваться услугами специалисты информационной безопасности.

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

Стоит ли переживать?

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

Следует посмотреть логи. Они укажут, в каком направлении искать «корень зла». Дополнительно нужно протестировать скрипты.

Во внешнем контуре все хорошо? Не исключено, что проблема «сидит» внутри, как паразит. Для начала необходимо проверить ваш ресурс на наличие вредоносного кода и поставить защиту.

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

И помните, комплексный подход – лучшее решение сбоев производительности. Не останавливайтесь исключительно на внешних или внутренних проблемах, оперативно устраняйте обе разновидности, оптимизируя ваш сайт!