Как считается нагрузка

Нагрузка на сервер считается количеством процессорного времени потраченного сервером на обработку процессов пользователей. Учитывается то, сколько потребляли исполняемые процессы пользователя, а также затраченные ресурсы MySQL. Подробности того, чем же конкретно заняты пользовательские процессы, системе учёта неизвестны. Это можно косвенно или явно увидеть по логам веб-сервера - система указывает на дату и время, название процесса и количество тактов процессора, потраченное на работу данного процесса.

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

Для удобства пользователя в панели управления хостингом есть график (раздел «Аккаунт» → «Статистика CPU, MySQL»), на котором указана максимально допустимая для текущего тарифного плана нагрузка, а также имеется возможность просматривать отдельно статистику нагрузки на CPU, и отдельно статистику нагрузки на MySQL.

график нагрузки 5 минут
Почему нужно следить за нагрузкой?

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

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

Почему нельзя просто ограничить потребление ресурсов?

Иногда скрипты пользователя потребляют больше, чем положено по тарифному плану. Жёсткое ограничение ресурсов означает аварийное завершение скриптов пользователя и в конечном итоге, нестабильную работу его сайтов.

Как снизить нагрузку?

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

Если нагрузка возникает периодически, то необходимо внимательно просмотреть логи на момент возникновения нагрузки. Определить этот момент точнее Вам поможет график нагрузки с 5-минутным интервалом.

график нагрузки 5 минут

Для поисковых ботов достаточно задать crawl-delay или в файле robots.txt описать, какие разделы сайта можно, а какие нельзя индексировать. Примеры использования robots.txt можно увидеть здесь.

Любую нежелательную активность можно ограничить средствами веб-сервера. Это можно сделать через файл .htaccess. Пример ограничения по user-agent:

BrowserMatchNoCase "Baiduspider" bots
BrowserMatchNoCase "HTTrack" bots
BrowserMatchNoCase "BadBot" bots

Order Allow,Deny
Allow from ALL
Deny from env=bots

Пример ограничения по IP-адресу:

deny from 123.123.123.123

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

Если Вы разработчик, можем предложить подключение модуля php XHprof. Вместе с инструментами веб-разработчика в браузере он предоставляет достаточно информации для профилирования кода.

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

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

Если бороться с нагрузкой нет возможности или желания, есть несколько решений:

  • воспользоваться дополнительной услугой «увеличенная нагрузка CPU»;
  • арендовать VDS - все его ресурсы виртуального выделенного сервера будут полностью в Вашем распоряжении. Минусы этого решения - администрированием сервера и резервным копированием данных Вам придётся заниматься самостоятельно или покупать дополнительную услугу «расширенное администрирование»;
  • арендовать выделенный сервер. Вы получаете привычное Вам окружение, Вам не приходится заботиться об администрировании и резервном копировании, все заботы о сервере берем мы в свои руки.