Легкий ли модуль Apache для регулирования запросов в зависимости от загрузки машины?

У меня есть сервер Apache, который обслуживает приложение django с mod_wsgi. Мне интересно, есть ли простой способ регулирования запросов на уровне apache, основанный на загрузке машины.

В идеале я хочу модуль apache, который, если нагрузка ниже определенной цифры, все работает хорошо. Однако, если загрузка выше чего-то, то X% IP-адресов будут обслуживаться статической HTML-страницей в течение Y минут. Это программное обеспечение существует?

Мы ищем "систему регулирования бедного человека". Кое-что быстрое и простое, что мы можем сделать. Дросселирование, основанное на загрузке машины, хорошо, потому что это означает, что в конечном итоге все вернется в норму.

Наше веб-приложение выполняет большую часть обработки, поэтому вещи, которые ограничивают пропускную способность, не собираются ее обрабатывать, мы хотим "регулировать" не пропускную способность, а запросы. В идеале мы хотели бы, чтобы некоторые существующие запросы (например, основанные на IP-адресе) могли продолжаться в течение определенного периода времени (чтобы они могли закончить свою работу).

2 ответа

Я никогда не настраивал это сам, и я ценю, что это не совсем то, что вы ищете (т.е. это не модуль apache), но есть инструмент, называемый управлением трафиком. Принимая во внимание, что tc вызывается с помощью простой командной строки, кажется вероятным, что вы можете интегрировать его в свой собственный сценарий и инициировать необходимое регулирование на основе выходной нагрузки top или любого другого значения, которое вы отслеживаете.

На этой странице есть пример скрипта: http://wiki.openvz.org/Traffic_shaping_with_tc

Отказ от ответственности: я фанат лака.

Я не знаю ни одного официального модуля Apache, делающего это изначально.

Varnish может служить статическим html, если серверная часть (django) не отвечает в течение указанного времени.

Если вы действительно хотите предоставить статический файл 10% посетителей на основе средней загрузки, я думаю, это можно сделать с помощью vmods (я думаю, вам придется написать свой собственный).

Другие вопросы по тегам