大型网站分布式架构(四)—— JVisualVM远程监控Tomcat

JVisualVM综述

JDK发布的功能最强大的运行监视和故障处理工具,他可以做到:

  • 显示虚拟机进程以及进程的配置、环境信息
  • 监视应用程序的CPU、GC、堆、方法区以及线程的信息
  • dump以及分析堆转储快照
  • 方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法
  • 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照、可以将快照发送开发者处进行BUG反馈

JVisualVM监控Tomcat

1.本地Tomcat

打开JVisualVm 既可以开始监控

2.远程Tomcat

2.1配置服务器端Tomcat的JMX

博主是Linux系统下的远程Tomcat,在Tomcat的bin目录下的catalina.sh添加以下内容

JAVA_OPTS="-Djava.rmi.server.hostname=192.168.214.150\
           -Dcom.sun.management.jmxremote.port=11111\
           -Dcom.sun.management.jmxremote.rmi.port=11111\
           -Dcom.sun.management.jmxremote.ssl=false\
           -Dcom.sun.management.jmxremote.authenticate=false"

注意:JAVA_OPTS配置在第一次出现JAVA_OPTS的位置之前即可,当然,是在流程控制语句之外

参数 含义
-Djava.rmi.server.hostname rmi服务器所在主机名,这里配置为tomcat所在服务器ip即可
-Dcom.sun.management.jmxremote.port jmx端口
-Dcom.sun.management.jmxremote.rmi.port rmi端口,配置同jmx端口一致
-Dcom.sun.management.jmxremote.ssl 是否进行证书认证,http和https的区别,这里设置成false
-Dcom.sun.management.jmxremote.authenticate 是否进行用户名密码认证,这里配置成false是为了方便,线上环境必须配置用户认证
2.2客户端启动JVisualVM工具

前提是客户端已经安装JDK

zaomianaodeMBP2:~ zaomianbao$ jvisualvm

会弹出一下窗口
这里写图片描述

2.3添加远程主机

右键"远程"–>“添加远程主机”–>在"主机名"处输入Tomcat所在服务器IP地址–>点击"确认"
这里写图片描述

2.4添加JMX连接

右键刚刚创建的远程主机,选择"添加JMX连接"
这里写图片描述
输入连接:192.168.214.150:11111;勾选"不要求SSL连接",点击确认
这里写图片描述
点击创建成功的JMX连接
这里写图片描述
到此处JVisualVM连接远程Tomcat成功

JVisualVM窗口概述

可以看到顶栏处有4个菜单,分别为:概述、监视、线程、抽样器

Tables Are
概述 包括JVM参数和系统相关属性等基本信息
监视 展示了CPU、堆、类装载、线程的活动情况
线程 展示所有的线程及各自的状态:运行、休眠、等待、驻留、监视
抽样器 细致的内存和CPU的实时监控

监视
这里写图片描述
线程
这里写图片描述
抽样器
这里写图片描述

总结

到此,就实现了客户端对服务器端Tomcat容器的远程监控,下一篇将结合压力测试工具和JVisualVM来观察调节Tomcat的运行,进一步深入Java虚拟机层面的性能调优。虽然Java虚拟机是分布式架构以外的知识,但是了解和掌握JVM运行原理和性能调优是一个健壮的WEB服务的前提。