本文主要参考慕课网若鱼老师课程Java生产环境下性能监控与调优详解
请支持正版,抵制盗版,维护每一位辛苦付出的人的合法权益!
本章关键词:JVisualVM、本地监控、远程监控
一、监控本地java进程
1.JVisualVM(jdk自带工具)
-
工具在jdk/bin目录下,windows双击.exe文件运行,主界面如下
连接本地java进程不需要进行任何配置,自动连接
-
监视视图
堆Dump和MAT功能很相似,但是相对于MAT功能会差一点,也可以将.hprof文件引入
-
线程视图
- 抽样器
对cpu或者内存(类似执行jstat)进行抽样
比如cpu抽样,可以看到那些地方的方法执行的时间比较长,便于定位问题 - 安装插件
点击“工具”->“插件”进入插件界面,
将插件地址配置为下面官网选择的地址
进入官网,根据jdk版本选择地址
配置完成后,可以到可用插件中安装插件
Visual GC:图形化的展示各区的内存变化
BTrace Workbench:编写BTrace脚本
二、监控远程java进程
1.连接远程Tomcat
-
添加远程主机
- 配置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连接
- 各个视图和本地连接是一样的,参考本地连接
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详情请参考官方文档,可以选择中文版去看