版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22075041/article/details/83278309
如果你前面看了我几篇关于jvm性能优化的文章,命令行操作是不是不直观,那么我们来使用这个JVisualVM吧,在jdk的bin文件夹里,这个官方文档都有中文版,插件啥的自己看着安装。https://visualvm.github.io/pluginscenters.html
他主要有如下的功能:
1.监控本地Tomcat
2. 监控远程Tomcat
3.监控普通的JAVA进程
功能 抽样器-选择cpu 可以查看热点方法,方法执行的时间,从而排除方法慢的原因(尤其是慢sql的情况下)
抽样器-选择内存 动态参数对象占用的内存
安装插件 先设置插件中心的地址,必须和角度看版本相同 插件 Visual GC 图形化的展示内存的变化情况
JMX 连接远程机器
1.启动普通的jar程序
java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar foo.jar
2.远程连接启动authenticate、ssl参数,参考上面的命令
tomcat 配置
1.不需要鉴权
JAVA_OPTS=-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
2. 鉴权
set JMX_REMOTE_CONFIG=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access set CATALINA_OPTS=%CATALINA_OPTS% %JMX_REMOTE_CONFIG%
复制并修改授权文件
JAVA_HOME/jre/lib/management下有jmxremote.access和jmxremote.password.template的模板文件,将两个文件复制到CATALINA_BASE/conf目录下
*重命名jmxremote.password.template文件为jmxremote.password
*修改CATALINA_BASE/conf/jmxremote.access 添加内容:
monitorRole readonly
controlRole readwrite
*修改CATALINA_BASE/conf/jmxremote.password 添加内容:
monitorRole liuke #可自定义
controlRole liuke #可自定义
tomcat 为 8.0.5 tomcat catalina.sh 加入以下配置,需要配置的是下方的port(注意不要与其他的端口冲突),hostname 为虚拟机的IP
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=192.168.56.1"
远端链接记得把9004端口号开放哦。。。