Begrenzung der Netzwerkbandbreite eines Java-Prozesses

8

Gibt es eine effiziente Möglichkeit, die Bandbreite eines bestimmten Java-Prozesses zu begrenzen?

Ich bin mit Lösungen wie trickle vertraut, um die Bandbreite eines bestimmten Prozesses zur Laufzeit zu begrenzen

%Vor%

Aber im Umgang mit Java-Prozessen ist es eine größere Herausforderung, da die Anwendung einen JVM oder in einigen Fällen einen WRAPPER-Dienst initiiert, der ein JVM initiiert - das bedeutet, dass Lösungen wie "trickle" nicht funktionieren.

Ich kann versuchen, den gesamten Java-Prozess zu begrenzen (mit trickle ) (indem ich mit /usr/bin/java s.link umgehe / herumspiele) - UGLY. Kennt jemand eine bessere Lösung zur Begrenzung der Bandbreite eines Java-Prozesses ( JVM )?

Danke!

    
eran 16.04.2012, 15:26
quelle

2 Antworten

3

Leider glaube ich nicht, Rinnsal kann es tun. Ich habe ein ähnliches Problem und habe es über die Drosselung der Bandbreite an einem bestimmten Port gelöst. Zum Beispiel öffnet Ihre Anwendung den Port 34567 zur Kommunikation, dann können Sie die Firewall-Einstellungen anwenden und sie herunterregeln.

Auf einem Mac verwende ich "ipfw", Beispiel:

%Vor%

Unter Linux verwende ich "tc", Beispiele & amp; Quelle: Ссылка

Als endgültige Lösung können Sie ein Bash-Skript erstellen, das Prozesse überwacht und diejenigen auswählt, die Sie benötigen, und Port-Throttling darauf auslöst.

    
MeIr 23.07.2013, 14:38
quelle
0

Die Frage ist nicht wirklich klar. Haben Sie die Kontrolle über den Java-Code? Andernfalls sind Sie der Systemadministrator?

Wenn Sie einen Java-Code verwenden, können Sie das Socket-Paradigma verwenden und dann jede Socketverbindung mithilfe der folgenden Methode begrenzen: setPerformancePreferences (int connectionTime, int latency, int-Bandbreite) . Im anderen Fall hängt die Fähigkeit zur Bandbreitenbegrenzung vom Betriebssystem und von der Art ab, in der die Java-Anwendungen ausgeführt werden.

    
JeanValjean 20.04.2012 19:36
quelle

Tags und Links