У меня есть ситуация, когда сервер делает много запросов от больших веб-серверов одновременно. В настоящее время я не могу контролировать количество запросов или частоту запросов от приложения, которое это делает. Ответов от этих веб-серверов больше, чем может обработать интернет-линия. (По сути, мы запускаем DoS на себя).
Я собираюсь получить толчок, чтобы исправить это на уровне приложения, но пока могу ли я использовать формирование трафика на сервере Linux, чтобы контролировать это? Я знаю, что могу формировать только исходящий трафик, но, возможно, есть способ замедлить ответы TCP, чтобы другая сторона обнаружила перегрузку, и это поможет в моей ситуации? Если есть что-то подобное с tc, как может выглядеть конфигурация?
Идея состоит в том, что контроль трафика может помочь мне контролировать, какие пакеты будут отброшены, прежде чем они достигнут моего маршрутизатора.
Вы должны иметь возможность устанавливать ограничение скорости TCP-соединений, если удаленные серверы подчиняются правилам передачи и приема TCP-пакетов, тогда вы должны иметь возможность установить ограничение скорости, чтобы избежать ошибки.
У меня был хороший успех с HTB http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
если вы более знакомы с cisco, то можете реализовать политику qos на своем шлюзе, а не на самом сервере.
использование qos - лучшее решение, чем iptables --limit, оно обеспечивает эффективное использование доступной полосы пропускания. Никакие потоки не будут голодны, и к каждому будут относиться справедливо.
HTB довольно продвинутый, вы можете сначала использовать некоторые другие методы qos, чтобы понять, как работает qos. Правила qos легко написать, но гораздо сложнее доказать, что они действительно делают то, что вы хотите, - это все варианты использования.
Я думаю, вы могли бы использовать iptables с «--limit» или, может быть, с hashlimit (или с последними --seconds --hitcount). [Конечно, только как временное решение.]
Как насчет использования trickle
? Его также можно запустить как trickled
для формирования глобальной пропускной способности http://www.linux.com/archive/feed/61293 (на самом деле только что обнаружил это сам :-)