使用 visualvm 远程分析 neo4j

remote profiling neo4j using visualvm

我正在尝试使用本地笔记本电脑上的 VisualVM 监控 GC 信息,并连接到 Oracle 上的 Neo4j(企业)应用程序 运行ning JDK 远程 EC2 实例上的 8 运行ning ubuntu 16. 我可以使用 JMX 连接进行连接,但问题是我无法在 VisualGC(插件)上查看任何内容。消息是 "Not supported for this JVM"。

基于此 link and link, I ran the jstatd command on the remote but that didn't solve the problem. Next, looked at this link,我 运行 jstatd 作为 neo4j 用户,因为这是 Neo4j 服务 运行 下的用户。如果我 运行 jstatd 作为 ubuntu 用户,下面的命令有效但不在 VisualGC 上显示任何数据。

sudo -u neo4j jstatd -p 8888 -J-Djava.security.policy=/home/ubuntu/tools.policy -J-Djava.rmi.server.hostname=neo4j_ip_address

运行 以上命令作为 neo4j 用户给出了这个错误:

Could not create remote object access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write") java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
        at java.security.AccessController.checkPermission(AccessController.java:884)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.System.setProperty(System.java:792)
        at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)

这些 tools.policy 文件的权限是否正确?

-rwxr-xr-x 1 neo4j  adm    112 Mar 21 15:41 tools.policy

tools.policy 的内容:

grant codebase "file:/usr/lib/jvm/java-8-oracle/lib/tools.jar" {
   permission java.security.AllPermission;
};

如何让 VisualGC 在这种情况下工作? VisualVM 是否有任何日志可以了解发生了什么?我可以使用任何其他工具来直观地查看 GC 统计信息吗?任何帮助深表感谢。谢谢。

如果您尝试 运行 jstatd 使用完整路径会怎样?

sudo -u neo4j /usr/lib/jvm/java-8-oracle/bin/jstatd -p 8888 -J-Djava.security.policy=/home/ubuntu/tools.policy -J-Djava.rmi.server.hostname=neo4j_ip_address