jvm---6.3、JVM监控工具 VisualVM
运行时监控 VisualVM
VisualVM 是jdk发布的功能最强大的运行监视、故障处理、性能分析工具。不需要被监视的程序基于特殊的Agent运行,因此它对应用程序的实际性能影响很小,可以直接使用在生产环境中。
实现功能:
显示jvm进程及进程配置,环境信息------jps jinfo
监视jvm进程的cpu,gc,堆,方法区及线程的信息----jstat jstack
dump及分析堆快照----jmap jhat
方法级的程序运行性能分析,找出调用最多、运行时间最长的方法
离线程序快照:收集程序的运行时配置,线程dump,内存dump等信息
可以安装其它插件,完成监控功能
启动VisualVM、安装监控插件:(机器上要有jdk)
> jvisualvm #启动,jdk 自带的执行程序 安装插件:工具->插件
勾选,安装。(有的插件要翻墙安装,每个插件的功能,在右则有说明。)
启动服务,开启jmx
启动服务添加开启jmx配置(就是添加JAVA_OPT启动配置)
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8561 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
jmxremote 开启jmx remote
port 端口
authenticate 是否开启验证
ssl 配置ssl
注:配置用户权限(服务器上配置):
在${JAVA_HOME}/jre/lib/management 目录下有两个文件:jmxremote.access、jmxremote.password.template分别定义的jmx的用户访问权限及用户密码
配置示例:
jmxremote.access 文件配置
monitorRole readonly #配置用户monitorRole 只读权限
jmxremote.password.template 文件配置
monitorRole 123456 #配置用户monitorRole 密码
上面的启用JMX 配置修改为:authenticate=true 增加指定paswword.file 和 access.file
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8561 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=jmxremote.password.template -Dcom.sun.management.jmxremote.access.file=jmxremote.access
VisualVM 添加远程监控
右键远程,添加远程监控,这里写远程监控的名称。
右键刚创建远程监控的名称,添加JMX连接。填写监控服务的ip,及上面配置的端口(8561)
连接成功,展示是“概述”。包括pid,jvm 版本,jvm参数等
监控说明
监视:就是对整个服务的一个总体监控。包含cpu,堆,类加载,线程的情况
抽样
可以根据cpu和内存抽样,抽样出占用cpu时间最多的线程和占用内存最大的对象。提供优化依据
MBeans 内存中的对象
可以查看内存中对象的属性,可以调用对象的方法。
Tracer
可以跟踪jvm中任何东西,只要勾选然后点击Start 就行
插件安装不同页签也不相同,有些监控jvm 不支持