У меня есть сервер Apache, который обслуживает приложение django с mod_wsgi. Мне интересно, есть ли простой способ ограничить запросы на уровне apache в зависимости от загрузки машины.
В идеале мне нужен модуль apache, который, если нагрузка ниже определенного значения, все работает нормально. Однако, если нагрузка выше чем-то, то X% IP-адресов будут обслуживаться статической html-страницей в течение Y минут. Это программное обеспечение существует?
Мы ищем «дроссельную систему для бедняков». Мы можем воспользоваться чем-то быстрым и легким. Регулирование в зависимости от загрузки машины - это хорошо, потому что это означает, что в конечном итоге все вернется в норму.
Наше веб-приложение выполняет много обработки, поэтому вещи, которые ограничивают пропускную способность, не собираются улавливать это, это не пропускная способность, которую мы хотим «ограничить», а запросы. В идеале мы бы хотели, чтобы некоторые существующие запросы (т.е. основанные на IP-адресе) могли продолжаться в течение определенного времени (чтобы они могли завершить свою работу).
Отказ от ответственности: я фанат лака.
Я не знаю, чтобы какой-либо официальный модуль apache делал это изначально.
Лак может обслуживать статический html, если серверная часть (django) не отвечает в течение указанного времени.
Если вы действительно хотите предоставлять статический файл 10% посетителей в зависимости от средней нагрузки, я думаю, это можно сделать с помощью vmods (Думаю, вам придется написать свой собственный).
Я никогда не настраивал это сам, и я понимаю, что это не совсем то, что вы ищете (т.е. это не модуль apache), но есть инструмент, называемый контролем трафика. Учитывая, что tc вызывается простой командной строкой, кажется вероятным, что вы можете интегрировать его в свой собственный скрипт и инициировать дросселирование, которое вы хотите, на основе вывода нагрузки сверху или чего-то еще, что у вас есть для мониторинга нагрузки.
На этой странице есть пример сценария: http://wiki.openvz.org/Traffic_shaping_with_tc