【问题标题】:limiting the network bandwidth of a java process限制java进程的网络带宽
【发布时间】:2012-04-16 15:26:48
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

标签: java bandwidth-throttling


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      相关资源
      最近更新 更多