我正在尝试使用 Java VisualVM 中的 Visual GC 来获取远程 Tomcat 的内存布局。
在托管 Tomcat jstatd 的 Linux 服务器上运行(包括 tools.policy 和正确的 [-J]-Djava.rmi.server.hostname=[SERVER_IP],可在Tomcat 的 jvm 选项也是如此)。
从 VisualVM 到 server/jstatd 的连接工作正常:
但我在 Jstatd 连接的 Visual GC 选项卡中只能看到 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_IP]
关于java - Java VisualVM 中的 Visual GC 通过 jstadt 用于远程 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490027/