通过远程Tomcat的jstadt在Java VisualVM中实现可视化GC

通过远程Tomcat的jstadt在Java VisualVM中实现可视化GC,java,tomcat,garbage-collection,jvisualvm,jstatd,Java,Tomcat,Garbage Collection,Jvisualvm,Jstatd,我试图在JavaVisualVM中用VisualGC可视化远程Tomcat的内存布局。 在运行Tomcat jstatd的Linux服务器上(包括tools.policy和适当的[-J]-Djava.rmi.server.hostname=[server\u IP],也可以在Tomcat的jvm选项中找到)。 从VisualVM到服务器/jstatd的连接工作正常: 但是我在Jstatd连接的visualgc选项卡中看到的只是Jstatd JVM本身的内存细节,而不是Tomcat的数据。 编辑

我试图在JavaVisualVM中用VisualGC可视化远程Tomcat的内存布局。 在运行Tomcat jstatd的Linux服务器上(包括tools.policy和适当的[-J]-Djava.rmi.server.hostname=[server\u IP],也可以在Tomcat的jvm选项中找到)。
从VisualVM到服务器/jstatd的连接工作正常:


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

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

任何可行的替代方案,如提供类似于下面的可视化的另一个可视化工具,都是绝对可以接受的。 我们也在使用Yourkit,但我在里面找不到任何类似Visual GC易懂风格的东西。

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


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

在远程服务器上创建策略

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>
jstatd-J-Djava.security.policy=/tmp/tools.policy-J-Djava.rmi.server.hostname=
您已经准备好在本地机器上的VisualVM中使用VisualGC