2012-04-16 3 views
8

특정 자바 프로세스의 대역폭을 제한하는 효율적인 방법이 있습니까?자바 프로세스의 네트워크 대역폭 제한

나는 실행 시간

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

에 특정 프로세스의 대역폭을 제한하는 trickle와 같은 솔루션 익숙하지만 자바를 처리 할 때 처리 그것이 응용 프로그램이 JVM 또는 일부에 시작하는 도전의 더 때문에 수 JVM을 시작하는 WRAPPER 서비스의 경우 - '물방울'과 같은 솔루션이 작동하지 않음을 의미합니다.

나는 (trickle을 사용하여) 전체 자바 프로세스를 (/usr/bin/java s.link로 래핑/어라운 방식으로) 시도하고 제한 할 수 있습니다. 누구든지 자바 프로세스 (JVM)의 대역폭을 제한하기위한 더 나은 솔루션을 알고 있습니까?

감사합니다.

+2

이것이 사용 가능한지 확인하십시오. http://stackoverflow.com/questions/3246345/making-a-reliable-web-service-unreliable-but-in-a-controlled-way/3247133#3247133 – Kennet

답변

3

불행히도 나는 물방울이 그것을 할 수 있다고 생각하지 않습니다. 비슷한 문제가 있으며 특정 포트의 대역폭을 조절하여 해결했습니다. 예를 들어 응용 프로그램이 통신을 위해 포트 34567을 열면 방화벽 설정을 적용하고이를 제한 할 수 있습니다.

맥에

나는 "IPFW"를 사용하고, 예 : 리눅스에

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

내가 "TC"를 사용하고, 예 & 소스 : 최종 솔루션으로 http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

, 당신은 떠들썩한 파티를 만들 수 있습니다 스크립트는 프로세스를 모니터링하고 필요한 프로세스를 선택하고 프로세스에 포트 제한을 전달합니다.

0

질문은 명확하지 않습니다. 자바 코드를 제어 할 수 있습니까? 그렇지 않으면 System Administator입니까?

Java 코드를 사용하는 경우 소켓 패러다임을 사용하고 setPerformancePreferences (int connectionTime, int latency, int bandwidth) 메서드를 사용하여 각 소켓 연결을 제한 할 수 있습니다. 다른 경우 대역폭 제한 기능은 OS 및 Java 응용 프로그램의 실행 방법에 따라 다릅니다.

관련 문제