2

我正在尝试使用 Java VisualVM 中的 Visual GC 可视化远程 Tomcat 的内存布局。在托管 Tomcat jstatd 的 Linux 服务器上运行(包括tools.policy和正确的 [-J]-Djava.rmi.server.hostname=[SERVER_IP],它们也可以在 Tomcat 的 jvm 选项中找到) )。
从 VisualVM 到 server/jstatd 的连接正常工作:

jvisualVM的连接树

但是我在 Jstatd 连接的Visual GC选项卡中看到的只是 Jstatd JVM 本身的内存详细信息,而不是 Tomcat 的数据。
编辑:在 Tomcat 连接(prod apl01 jmx)的 Visual GC 选项卡中,有人告诉我:“此 JVM 不支持”使用我们在内部运行的系统测试它,我在这里得到了正确的数据。

远程 Tomcat 使用它自己的用户“tomcat”运行。jstatd 也必须由该用户启动吗?还是我可能会遗漏另一个问题?

任何可行的替代方案,例如提供类似于以下可视化的另一种可视化工具,都是绝对可以接受的。我们也在使用Yourkit,但我在其中找不到任何类似于 Visual GC 易于理解的样式。
Visual GC 内存布局可视化

4

2 回答 2

4

在对我们的语言环境开发环境进行了更多研究和测试后,我意识到我们对生产环境没有正确的权限。所以我要求管理员将 jstatd 添加到 sudoers 列表中,瞧,它按预期工作:

sudo /usr/java/latest/bin/jstatd -J-Djava.security.policy=/home/empulse/tools.policy -J-Djava.rmi.server.hostname=[SERVER_IP]

于 2013-08-29T13:14:39.070 回答
1

在远程服务器上创建策略,

vim /tmp/tools.policy

添加权限,

grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};

并启动 jstatsd,

jstatd -J-Djava.security.policy=/tmp/tools.policy -J-Djava.rmi.server.hostname=<public_ip>

你已经准备好在本地机器上的 VisualVM 中使用 Visual GC。

于 2017-02-08T07:48:13.643 回答