【发布时间】:2012-03-08 11:25:50
【问题描述】:
我们共享一个用于开发各种 Java 应用程序的远程 Linux 机器,并且我们使用 VisualVM over ssh 来分析应用程序as described here。有什么方法可以在我们的 Java 进程上启用 JMX/分析,而无需在我们的进程/用户之间分配/提供端口号?必须始终确保您指定(唯一)端口号只是为了启用分析,这很烦人。
为了让这一切更具体:硬编码端口显然不起作用并且会发生冲突:
exec java -Dcom.sun.management.jmxremote.port=3000 ...
我们可以要求您在运行进程时始终指定唯一端口,但这很乏味——您必须确保您的端口不与其他进程冲突,也不与其他用户冲突:
exec java -Dcom.sun.management.jmxremote.port=$1 ...
目前我们使用:
exec java -Dcom.sun.management.jmxremote.port=$(( $RANDOM + 2000 )) ...
但我们还是偶尔会碰到被占用的端口号。
我们可以继续使用更高级的脚本(例如,查询 netstat 以获取占用的端口号并希望没有竞争),但我们想知道是否有更好的方法/我们是否做错了。
【问题讨论】:
标签: java jvm jmx jvm-hotspot visualvm