На виртуальном хостинге действуют 2 лимита нагрузки:
- нагрузка на CPU веб-сервера;
- нагрузка на CPU сервера MySQL.
Смотрите также: Что означает 3% нагрузки?
Нагрузка каждого клиента на CPU веб-сервера измеряется системой Process accounting в ОС Linux (подробнее).
Единица измерения cp (cpu points) - показывает количество минут, на протяжении которых работали бы все задачи клиента, при 100% нагрузке на одно ядро.
nobody 2646 1969622.74re 4.79cp 4478k
p777 252 182801.97re 4.35cp 43802k
p888 191 3925346.01re 2.43cp 36405k
p999 142 990.24re 2.41cp 41263k
...
В данном примере процессы пользователя p777 работали 4.35 минуты.
Собранные данные каждый час обнуляются и записываются в базу данных биллинга. Если заказ за прошедший час превысил часовую норму нагрузки своего тарифа (1/24 ≈ 4.2%), следующий час процессы работают с пониженным приоритетом относительно других заказов (nice level). При уменьшении нагрузки, приоритет восстанавливается.
Такой алгоритм позволяет не останавливать работу сайтов, если им временно требуется больше ресурсов (например, при индексации поисковыми системами), а просто немного замедлять.
По техническим причинам на серверах с панелями управления cPanel и ISPmanager невозможно менять nice level для скриптов конкретного заказа. Поэтому при регулярном превышении нагрузки на CPU веб-сервера, мы вынуждены будем остановить работу такого заказа.
Нагрузка на CPU сервера MySQL измеряется системой Percona User Statistics (подробнее) в секундах работы.
mysql> select substring_index(USER, '_', 1) `order`,sum(CPU_TIME) cpu
from information_schema.user_statistics where user like 'p%' group by `order`
order by cpu desc limit 30;
+-------+------+
| order | cpu |
+-------+------+
| p777 | 241 |
| p888 | 66 |
| p999 | 62 |
...
В данном примере, SQL-запросы заказа p777 работали 241 секунду.
Собранные данные каждый час обнуляются и записываются в базу данных биллинга. Если заказ за прошедшие сутки потребил ресурсов больше, чем положено по тарифу, клиенту отсылается предупреждение.
Информацию о самых запрашиваемых скриптах, о количестве запросов к ним, пользователи виртуального хостинга могут просмотреть во вкладке "Нагрузка":
Для просмотра детализации вам необходимо выбрать необходимую дату и желаемый временной промежуток:
Для дальнейшей диагностики вы можете просмотреть access.log для конкретного сайта, и определить с какого именно IP были запросы к указанным в панели скриптам.
Если превышение происходит регулярно, (например, средняя нагрузка за неделю гораздо выше разрешённой, равномерна и не уменьшается) мы можем заблокировать базу, создающую нагрузку.
Обращаем ваше внимание, что сайт или база могут быть заблокированы без предварительного уведомления, если нагрузка, которую они создают, отрицательно сказывается на качестве работы ресурсов других клиентов и не может быть уменьшена стандартными средствами. Чаще всего такое возникает, если заказ оказывает большую дисковую нагрузку на сервера.