Java VirtualVM远程监控Java应用性能

JVirtualVM支持通过Remote节点远程监控Java进程。这样可以利用可视化界面非常方便监控生产环境,用于定位Java应用CPU或者内存问题。

VirtualVM连接远程节点有2种方式:jstatd和jmx,下面分别详细讲解。

一、Jstatd连接方式

在远程主机上启动Jstatd,需要先配置权限,否则会报如下security错误:

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)

因此先在 $JAVA_HOME/bin下 创建一个 jstatd.all.policy 文件。内容如下:

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

注意Java9之后的版本不存在文件 tools.jar ,需如下配置:

grant codebase "jrt:/jdk.jstatd" {
   permission java.security.AllPermission;
};
grant codebase "jrt:/jdk.internal.jvmstat" {    
   permission java.security.AllPermission;    
};

然后在 $JAVA_HOME/bin下 下启动jstatd:

jstatd -J-Djava.security.policy=jstatd.all.policy

在本地JVirtualVM客户端上 Remote 下添加节点:

Java VirtualVM远程监控Java应用性能

接下来选择对应的java进程就可以进行监控了。不过jstatd模式下,只能使用简单的Monitor,无法使用Sampler功能。如需Sampler,需使用JMX方式连接。

以下为Monitor截图:

Java VirtualVM远程监控Java应用性能

二、JMX连接方式

在远程主机启动应用程序的时候增加jmx配置,如下:

java -Djava.rmi.server.hostname=ttg12 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false HelloWorld

注意:这种不需要验证的方式不安全!只用作测试,均不能用于外网可访问的生产环境!

在VirtualVM客户端增加JMX连接远程主机:

Java VirtualVM远程监控Java应用性能

填入主机和端口号,勾选不使用ssl:

Java VirtualVM远程监控Java应用性能

OK,现在除了Monitor之外,还可以监控线程和使用Sampler了。

Threads界面如下图:

Java VirtualVM远程监控Java应用性能

Sampler界面如下图:

Java VirtualVM远程监控Java应用性能

原文 

https://segmentfault.com/a/1190000022993976

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java VirtualVM远程监控Java应用性能

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址