У меня есть конечная точка веб-службы, которую я создаю, где люди будут публиковать XML-файл, и он действительно будет получать более 1 КБ запросов в секунду.
Теперь они отправляют эти xml-файлы через http-сообщение, но большинство из них будут ограничены по скорости.
Проблема в том, что ограничение скорости будет выполняться веб-приложением путем поиска source_id в xml, и если оно превышает x запросов в минуту, оно не будет обрабатываться дальше.
Мне было интересно, смогу ли я как-то провести проверку предела скорости раньше в процессе обработки и таким образом сохранить файл размером 50 КБ, который будет перебрасывать конвейер на мои веб-серверы и поглощать ресурсы.
Может ли балансировщик нагрузки как-то позвонить, чтобы проверить использование скорости?
Если это возможно, я мог бы поместить source_id в заголовок хоста, чтобы даже XML-файл не нужно было анализировать и загружать в память.
Можно ли просто смотреть на заголовки хоста и не загружать в память весь xml-файл размером 50 КБ?
Я действительно ценю ваше понимание, так как для этого требуется больше знаний обо всем стеке TCP / IP и т. Д.
Есть два основных типа возможностей:
1) Вы имеете дело с враждебными злоумышленниками, которые не будут сотрудничать с вашим дизайном. В таком случае, почему вам все равно, что Host
заголовок они отправляют? Ограничьте их по IP.
2) Вы имеете дело с сотрудничающими клиентами, которые создают большую нагрузку, чем вы хотите. В этом случае просто примите запрос и отправьте им ответ, в котором говорится, чтобы они отступили.
Если у вас более сложная ситуация, которая не попадает ни в одну из этих двух простых категорий, лучшее решение, вероятно, будет зависеть от того, что это за ситуация.
Это то, что tc команда / утилита - для этого требуется немного поработать, но оно того стоит. Я использую его для ограничения скорости передачи на сервер в DMZ за пределами нашей корпоративной локальной сети.
Вот несколько ссылок, которые помогли мне понять ...
Tc Filter - Диапазоны портов Расчет значения маски: http://mailman.ds9a.nl/pipermail/lartc/2007q4/021739.html
Ограничение скорости одного хоста или сетевой маски: http://lartc.org/howto/lartc.ratelimit.single.html
Вы можете заблокировать его через apache с аналогичными модулями. Или, если вы хотите вырезать это раньше, вы можете использовать сопоставление строк iptables, чтобы блокировать вещи через регулярное выражение.