Автоматическое ограничение процессорной нагрузки
Материал из 1GbWiki.
На вашем сайте отображается следующая заставка:
Сайт превышает предел нагрузки на процессор приобретенного тарифного плана хостинга.
Это обозначает, что для сайта включилась и сработала система по принудительному ограничению потребления ресурсов. Ваш сайт превысил предел нагрузки на процессор, установленный в вашем тарифном плане (см. раздел "цены" основного сайта).
Когда пропадет заставка?
Информация о текущей нагрузке сайта обновляется раз в несколько минут. Если нагрузка за последний час спала, заставка пропадет и сайт продолжит работу.
Насколько часто вместо сайта отображается заставка?
Система создала каталог .proclimit<случайная-строка> в корневом каталоге вашего сайта. Посмотрите лог-файлы по датам. В файлах log_limit_<дата>.log отображаются заблокированные запросы, в файлах log_limit_<дата>_ok.log - запросы, которые не были блокированы.
Что делать дальше?
- коротко: три варианта, в порядке простоты действий - блокировать нарушителей, сменить тариф, оптимизировать сайт.
Оцените, насколько полученное качество работы сайта вас устраивает. Если устраивает, можно ничего не делать, система постарается ограничить ваш сайт так, чтобы он не выходил за тариф. Например, возможно, пик происходит всего один раз в несколько месяцев, сайт постоит блокированным 30 минут - это не страшно. Если блокировка срабатывает чаще допустимого или вам хочется, чтобы она не срабатывала вообще, смените тариф на более мощный. Блокировка изменит режим работы в течение 1 часа с момента смены тарифа. Вы можете также установить собственную блокировку для конкретных IP адресов, смотрите раздел Ограничение процессорной нагрузки.
На мой сайт заходит полтора человека в день, о чем вообще вы пишете?
- коротко: смотрите логи - статья "Формат файла cpu details.log", или https://www.1gb.ru/log
Связывать нагрузку сайта с посетителями ("униками") - популярное заблуждение, на деле это имеет смысл только для сайтов с посещаемостью в 20-50 тысяч посетителей в день и более. Для сайтов с меньшей посещаемостью гораздо больше нагрузки создает технический трафик - поисковые системы, боты проверок ссылок, RSS, администрирование сайта самим веб-мастером, и так далее. Понять точную причину нагрузки можно через раздел личного кабинета "полный список функций, "статистика процессорной нагрузки". Там вы можете запомнить время наиболее высокой нагрузки, а затем почитайте обычные логи веб-доступа за этот период (https://www.1gb.ru/log).
В личном кабинете превышения не видно, но заставка отображалась. Почему?
Статистика в личном кабинете (полный список функций/статистика/статистика процессорной нагрузки) показывается с усреднением и с разбивкой именно по часам (например с 09:00 по 10:00). Система же ограничения нагрузки работает с учётом именно последнего часа, предшествующего самому запросу.
Рассмотрим пример:
Сайт с 09:00 до 09:30 не производит нагрузки. С 09:30 по 10:30 он производит нагрузку в 3.5% и с 10:30 до 11:00 производит нагрузку в 1%. Таким образом средняя нагрузка за весь час с 09:00 до 10:00 (то, что отображается в статистике) будет (0*30 + 3.5*30)/60 = 1.75% и средняя загрузка за весь час с 10:00 до 11:00 будет (3.5*30 + 1.0*30)/60 = 2.25% (т.е. превышения вроде бы и не видно), Но при этом с 09:30 до 10:30 нагрузка от сайта составляет всё-таки 3.5% и сайт всё-таки превышает лимит и его работа блокируется заставкой.
В log_limit_<дата>.log видна нагрузка 3.1% (в тарифе допустимо 3.5%), но сайт блокируется. Почему?
Ограничение процессорной нагрузки блокировкой должно срабатывать с запасом, т.к. иначе блокировка будет включаться уже после превышения и само превышение всё-таки произойдёт. В качестве аналогии можно рассмотреть езду на автомобиле: торможение нужно начинать на некотором расстоянии до препятствия, а не подъехав вплотную к препятствию, иначе Вы всё-таки врежетесь.
Опытным путём было установлено, что блокировку в большинстве случаев следует включать примерно за 15% до граничной величины нагрузки (т.е. при максимально допустимой нагрузке в 3.5% ограничение нужно включать на уровне (3.5% * 0.85) = 2.98% ). Если Вы абсолютно уверены в том, что Вашему сайту будет достаточно меньший запас, то Вы можете поступить следующим образом:
- в разделе "полный список функций" -> "статистика" -> "Ограничение процессорной нагрузки" установить общий лимит на нужном Вам уровне (например 3.4%)
- в разделе "полный список функций" -> "сайты" -> "Дополнительные параметры сайтов" выбрать для нужного сайта какой-либо режим, кроме "ограничить посещаемость сайта" (например, "купить +10% нагрузки процессора на текущий день").
В таком случае принудительная блокировка на уровне, который мы считаем правильным, будет отключена. Но обратите внимание, что если Вы ошибётесь в своей оценке и превышение произойдёт, то необходимо будет доплачивать за лицензию на дополнительную нагрузку либо за переход на более дорогой тариф.
Как работает система ограничения нагрузки?
Раздел личного кабинета "ограничение процессорной нагрузки" позволяет вам установить более точные параметры ограничения, например, позволяет блокировать отдельных посетителей вместо работы сайта целиком. Система принудительного полного ограничения срабатывает только в том случае, если вы не смогли справиться с ситуацией своими средствами.
Я хочу заменить заставку на свою
Разместите в корневом каталоге сайта файл .cpu_limit_message.conf, напишите туда HTML страничку, которая будет выводиться вашим пользователям в момент перегрузки.
Откуда взялась такая нагрузка?
- коротко: смотрите логи - статья "Формат файла cpu details.log", или https://www.1gb.ru/log
Мой сайт работает уже давно и никогда никаких нагрузок не вызывал - откуда взялись эти XX% нагрузки?
Причины могут быть разные. Самые распространенные: индексация поисковыми роботами, ресурсоемкие задачи, выполняемые администратором, подбор паролей к админке вашего сайта. Подключение к сайту модуля, который требует для своей работы много процессорного времени. Определять что именно вызвало такую нагрузку и как с этим бороться вам нужно своими силами.
Для защиты от перегрузок можно воспользоваться добровольной настройкой ограничителя, для отсекания ресурсоемких IP-адресов заранее.
В последнее время самая частая причина сильных перегрузок - подбор паролей в панели администрирования сайтов, посмотрите на один из способов защиты от перебора паролей и перегрузки.
Как блокировать только тот IP, который создает нагрузку?
Настройте добровольное ограничение нагрузки на странице "Ограничение процессорной нагрузки" в личном кабинете. Если на сайт идет очень много запросов и обычный ограничитель не справляется - добавьте к нему более жесткий ограничитель