9

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

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

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

但是在处理 java 进程时,它变得更具挑战性,因为应用程序启动一个JVM或在某些情况下启动一个 WRAPPER 服务,JVM这意味着像“涓流”这样的解决方案将不起作用。

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

谢谢!

4

2 回答 2

3

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

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

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 脚本来监控进程并选择您需要的进程并对其进行端口限制。

于 2013-07-23T14:38:54.753 回答
0

这个问题不是很清楚。您是否可以控制 Java 代码?否则,您是系统管理员吗?

如果您使用的是 Java 代码,则可以使用 Socket 范例,然后使用以下方法限制每个套接字连接:setPerformancePreferences(int connectionTime, int latency, int bandwidth)。在另一种情况下,带宽限制能力取决于操作系统和 Java 应用程序的执行方式。

于 2012-04-20T19:36:19.650 回答