限制java进程的网络带宽

era*_*ran 8 java bandwidth-throttling

有没有一种有效的方法来限制某个Java进程的带宽?

我熟悉trickle在运行时限制某个进程的带宽的解决方案

sudo trickle -s -d 1024 /path/to/app.sh
Run Code Online (Sandbox Code Playgroud)

但是,随着Java进程打交道时,它使一个更大的挑战,因为应用程序启动JVM或在某些情况下发起的包装服务JVM-这意味着像"涓流"的解决方案将无法正常工作.

我可以尝试限制(使用trickle)整个java进程(通过包装/搞乱/usr/bin/java s.link) - UGLY.有谁知道一个更好的解决方案来限制java进程的带宽(JVM)?

谢谢!

MeI*_*eIr 3

不幸的是,我认为涓滴不能做到这一点。我有类似的问题,我通过限制特定端口上的带宽解决了它。例如,您的应用程序打开端口 34567 进行通信,然后您可以应用防火墙设置并限制它。

在 Mac 上我使用“ipfw”,例如:

sudo ipfw pipe 1 config bw 5KByte/s
sudo ipfw add 2 pipe 1 src-port 6666
Run Code Online (Sandbox Code Playgroud)

在linux上我使用“tc”,示例和来源:http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

作为最终的解决方案,您可以创建 bash 脚本来监视进程并选择您需要的进程并对其进行端口限制。