ограничение пропускной способности сети java-процесса

Есть ли эффективный способ ограничить пропускную способность определенного процесса Java?

Я знаком с такими решениями, как trickle для ограничения пропускной способности определенного процесса во время выполнения.

sudo trickle -s -d 1024 /path/to/app.sh

Но при работе с Java-процессами это усложняет задачу, потому что приложение инициирует JVM или, в некоторых случаях, службу WRAPPER, которая инициирует JVM — это означает, что такие решения, как «струйка», не будут работать.

Я могу попытаться ограничить (используя trickle) весь процесс Java (оборачивая/искажая /usr/bin/java s.link) - УЖАСНО. Кто-нибудь знает лучшее решение для ограничения пропускной способности java-процесса (JVM)?

Спасибо!


person eran    schedule 16.04.2012    source источник
comment
Проверьте, есть ли в этом какая-либо польза title="сделать надежный веб-сервис ненадежным, но контролируемым образом"> stackoverflow.com/questions/3246345/   -  person Kennet    schedule 16.04.2012


Ответы (2)


К сожалению, я не думаю, что Trickle может это сделать. У меня похожая проблема, и я решил ее, уменьшив пропускную способность на определенном порту. Например, ваше приложение открывает порт 34567 для связи, затем вы можете применить настройки брандмауэра и уменьшить его.

На Mac я использую «ipfw», например:

sudo ipfw pipe 1 config bw 5KByte/s
sudo ipfw add 2 pipe 1 src-port 6666

В Linux я использую «tc», примеры и источник: http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

В качестве окончательного решения вы можете создать bash-скрипт, который отслеживает процессы и выбирает те, которые вам нужны, и накладывает на них дросселирование портов.

person MeIr    schedule 23.07.2013

Вопрос не совсем ясен. У вас есть контроль над кодом Java? В противном случае, вы системный администратор?

Если вы используете код Java, вы можете использовать парадигму Socket, а затем ограничить каждое подключение к сокету, используя следующий метод: setPerformancePreferences(int connectionTime, int latency, int traffic). В другом случае возможность ограничения полосы пропускания зависит от ОС и способа выполнения приложений Java.

person JeanValjean    schedule 20.04.2012