2012-04-16 18 views
8

¿Existe alguna forma eficiente de limitar el ancho de banda de un determinado proceso java?limitando el ancho de banda de red de un proceso java

estoy familiarizado con soluciones como trickle para limitar el ancho de banda de un determinado proceso en tiempo de ejecución

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

Pero cuando se trata de procesos Java que hace que sea más que un reto, porque la aplicación inicia una JVM o de alguna casos un servicio WRAPPER que inicia un JVM - eso significa que soluciones como 'goteo' no funcionarán.

Puedo intentar y limitar (usando trickle) todo el proceso de Java (envolviendo/arruinando con /usr/bin/java en el enlace) - FEBRERO. ¿Alguien sabe de una mejor solución para limitar el ancho de banda de un proceso de Java (JVM)?

Gracias!

+2

Compruebe si es útil http://stackoverflow.com/questions/3246345/making-a-reliable-web-service-unreliable-but-in-a-controlled-way/3247133#3247133 – Kennet

Respuesta

3

Lamentablemente, no creo que el goteo pueda hacerlo. Tengo un problema similar y lo resolví mediante el ancho de banda de estrangulación en un puerto en particular. Por ejemplo, su aplicación abre el puerto 34567 para comunicarse, luego puede aplicar la configuración del cortafuegos y estrangularla.

en un Mac que estoy usando "ipfw", ejemplo:

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

En Linux que estoy usando "TC", ejemplos & fuente: http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

Como solución final, puede crear fiesta secuencia de comandos que supervisa los procesos y elige los que necesita y lanza el puerto de estrangulamiento en él.

0

La pregunta no es muy clara. ¿Tiene el control del código de Java? De lo contrario, ¿es usted el administrador del sistema?

Si está utilizando un código de Java se puede utilizar el paradigma del zócalo y luego limitar cada conexión de socket usando el siguiente método: setPerformancePreferences (int connectionTime, int latencia, ancho de banda int). En el otro caso, la capacidad de limitación de ancho de banda depende del sistema operativo y de la forma en que se ejecutan las aplicaciones Java.

Cuestiones relacionadas