1、JMX功能
1.1 介紹
JMX(Java Management Extensions,即Java管理擴展)是一個為應用程序、設備、系統等植入管理功能的框架。JMX可以跨越一系列異構操作系統平台、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。
所謂JMX,是Java Management Extensions(Java管理擴展)的縮寫,是一個為應用程序植入管理功能的框架。用戶可以在任何Java應用程序中使用這些代理和服務實現管理。
JMX架構圖:
三層結構
1、 基礎層:主要是Mbean,被管理的java bean Mbean分為如下四中
2、適配層:MbeanServer,提供對資源的注冊和管理 3、接入層: 提供遠程訪問的入口 |
JMX最常見的場景是監控Java程序的基本信息和運行情況,任何Java程序都可以開啟JMX,然后使用JConsole或Visual VM進行預覽。
1.2 添加JMX功能
1、wrapper程序添加JMX功能。
在wrapper.conf配置文件中添加如下配置:
local.jmx.port=39900 wrapper.java.additional.2=-Djava.rmi.server.hostname=192.168.1.75 wrapper.java.additional.3=-Dcom.sun.management.jmxremote.port=39900 wrapper.java.additional.4=-Dcom.sun.management.jmxremote.ssl=false wrapper.java.additional.5=-Dcom.sun.management.jmxremote.authenticate=false |
2、一般java程序添加JMX功能。
在java程序的命令后面指定如下指令
-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=1000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false |
3、tomcat添加JMX功能。
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=ip -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" |
2、Jconsole、jvisualvm工具使用
2.1 jconsole工具使用
1、遠程連接進程
2、連接成功后可以觀察概覽、內存、線程、類、VM概要、MBean
3、 可以查看不同區的內存使用情況
2.2 jvisualvm工具使用
1、遠程連接進程
2、登錄成功可以查看概述、監視、線程、抽樣器。
3、監視:CPU、內存、類、線程
4、通過抽樣器可以做內存鏡像
生成的文件在遠程服務器上查看:
3、解析堆文件
3.1、使用jhat命令解析
jhat -J-mx10240m heapdump-1563861495449.hprof
出現如下信息,表明讀取鏡像文件成功
3.2、頁面展示
使用UI輸入如下地址:http://192.168.1.75:7000/
通過頁面可以查看:
(1) 顯示出堆中所包含的所有的類
(2) 從根集能引用到的對象
(3) 顯示平台包括的所有類的實例數量
(4) 堆實例的分布表
(5) 執行對象查詢語句
4、JVM性能調優監控工具
jps、jstack、jmap、jhat、jstat、hprof
jmap這個命令執行,JVM會將整個heap的信息dump寫入到一個文件,heap如果比較大的話,就會導致這個過程比較耗時,並且執行的過程中為了保證dump的信息是可靠的,所以會暫停應用, 線上系統慎用。