第二章:基于JVisualVM的可视化监控

285 阅读2分钟

本文主要参考慕课网若鱼老师课程Java生产环境下性能监控与调优详解

请支持正版,抵制盗版,维护每一位辛苦付出的人的合法权益!

本章关键词:JVisualVM、本地监控、远程监控

一、监控本地java进程

1.JVisualVM(jdk自带工具)

  • 工具在jdk/bin目录下,windows双击.exe文件运行,主界面如下
    主界面.png
    连接本地java进程不需要进行任何配置,自动连接
  • 监视视图
    监视视图.png
    堆Dump和MAT功能很相似,但是相对于MAT功能会差一点,也可以将.hprof文件引入
    堆Dump.png
  • 线程视图
    线程视图.png

线程Dump.png

  • 抽样器 对cpu或者内存(类似执行jstat)进行抽样 比如cpu抽样,可以看到那些地方的方法执行的时间比较长,便于定位问题
  • 安装插件 点击“工具”->“插件”进入插件界面, 将插件地址配置为下面官网选择的地址

进入官网,根据jdk版本选择地址

插件地址配置.png

配置完成后,可以到可用插件中安装插件 Visual GC:图形化的展示各区的内存变化 BTrace Workbench:编写BTrace脚本

二、监控远程java进程

1.连接远程Tomcat

  • 添加远程主机
    添加远程主机.png
  • 配置jmx tomcat中,修改Catalina.sh文件

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=10.110.3.62"

-D设置了一个属性,port业务连接端口9004(本地连接远程jmx的端口) authenticate是否启用认证 ssl不启用 preferIPv4Stack优先使用ipv4 hostname远程主机地址

  • 添加jmx连接
    添加jmx连接.png
    设置连接.png
  • 各个视图和本地连接是一样的,参考本地连接

2.监控远程普通Java进程

  • 添加启动参数(参数和tomcat的一致)

nohup java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=10.110.3.62 -jar monitor_tuning.jar &

monitor_tuning.jar为打包成jar文件的项目

VisualVM详情请参考官方文档,可以选择中文版去看