使用jvisualvm远程监控服务器上的jvm

在测试环境复现出了的研发自测没有发现的疑难问题如性能问题,排除服务器本身的问题之后,研发就需要定位问题。
我们可以直接远程监控测试环境的jvm查看监控进程的运行情况么?
我们可以直接远程dump测试环境的运行进程分析线程阻塞原因么?
其实仅需通过jvisualvm这个jdk自带的图形化监控工具,去远程监控测试环境的jvm就可以解决上述问题。

Jvisualvm的启动

  • windows系统配置jdk环境变量。
  • cmd输入jvisualvm直接启动 如下图


    1612573934(1).jpg

以下监控方式springboot项目为例介绍

方式一 启动Java项目配置jmx启动参数

  • 启动远程应用需指定jmx相关配置
java -jar 
-Djava.rmi.server.hostname=远程服务ip 
-Dcom.sun.management.jmxremote.port=18888 
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.managementote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
xxx.jar
  • 本地jvisualvm右键远程添加远程主机ip


    1612575160(1).jpg
  • 右键远程分组下的远程ip点击添加JMX链接后输入上一步指定的jmx的端口号
    1612575590(1).jpg
  • 添加成功后即可监控应用的运行情况


    1612575948(1).jpg

方式二 使用服务端jdk的jstatd

  • 服务器上要安装jdk
  • 在jdk的安装目录bin下新建文件jstatd.all.policy输入如下内容(也可以写绝对路径)
grant codebase "file:${java.home}/../lib/tools.jar" {  
   permission java.security.AllPermission;  
};
  • 在jdk的安装目录bin执行jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=linux_ip
  • 使用jvisualvm远程监控监控方式使用

小结

  • 方式一启动时加JVM参数,可以写到启动脚本中,作用范围是当前应用
  • 方式二是利用jdk的jstatd去监控,作用范围是启动在JVM上的应用

有疑问留言,如果有帮到你的话,记得点赞收藏

你可能感兴趣的:(使用jvisualvm远程监控服务器上的jvm)