教你如何通過JConsoler監(jiān)控Tomcat的JVM內(nèi)存
通過JConsoler監(jiān)控Tomcat的JVM內(nèi)存
1.監(jiān)控Tomcat的方式
- 簡單命令
- 現(xiàn)成腳本
- 通過zabbix自定義監(jiān)控
自定義監(jiān)控 只要是用命令能得到的東西都能去監(jiān)控
通過jmx 對java進行監(jiān)控
- 其他監(jiān)控
通過ipmi 監(jiān)控硬件的
通過snmp 監(jiān)控網(wǎng)絡設備的,只要支持snmp都能監(jiān)控
2.Java自帶的監(jiān)控命令
- jps 導出java相關的進程
- 格式:jps -lvm
- 參數(shù)選項:-lvm最詳細
[root@localhost ~]# jps -lvm 7457 org.apache.catalina.startup.Bootstrap start start -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp 7525 org.apache.catalina.startup.Bootstrap start start -Djava.util.logging.config.file=/application/tomcat_8082/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/application/tomcat_8082 -Dcatalina.home=/application/tomcat_8082 -Djava.io.tmpdir=/application/tomcat_8082/temp 9144 sun.tools.jps.Jps -lvm -Denv.class.path=.:/application/jdk/lib:/application/jdk/jre/lib:/application/jdk/lib/tools.jar -Dapplication.home=/application/jdk1.8.0_60 -Xms8m 7482 org.apache.catalina.startup.Bootstrap start start -Djava.util.logging.config.file=/application/tomcat_8081/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/application/tomcat_8081 -Dcatalina.home=/application/tomcat_8081 -Djava.io.tmpdir=/application/tomcat_8081/temp
- jmap 導出jvm信息,常用于自定義監(jiān)控
- 格式:jmap pid
- 參數(shù):-heap
[root@localhost ~]# jmap -heap 7457 Attaching to process ID 7457, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.60-b23 using thread-local object allocation. Mark Sweep Compact GC Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 255852544 (244.0MB) NewSize = 5570560 (5.3125MB) MaxNewSize = 85262336 (81.3125MB) OldSize = 11206656 (10.6875MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB) Heap Usage: #監(jiān)控的話關注這一列 New Generation (Eden + 1 Survivor Space): capacity = 12779520 (12.1875MB) used = 11689352 (11.147834777832031MB) free = 1090168 (1.0396652221679688MB) 91.46941356169872% used Eden Space: #監(jiān)控的話關注這一列 capacity = 11403264 (10.875MB) used = 11059616 (10.547271728515625MB) free = 343648 (0.327728271484375MB) 96.98640669899426% used From Space: #監(jiān)控的話關注這一列 capacity = 1376256 (1.3125MB) used = 629736 (0.6005630493164062MB) free = 746520 (0.7119369506835938MB) 45.75718470982143% used To Space: #監(jiān)控的話關注這一列 capacity = 1376256 (1.3125MB) used = 0 (0.0MB) free = 1376256 (1.3125MB) 0.0% used tenured generation: #監(jiān)控的話關注這一列 capacity = 28164096 (26.859375MB) used = 18313224 (17.46485137939453MB) free = 9850872 (9.394523620605469MB) 65.02329774760035% used 21146 interned Strings occupying 1882520 bytes.
- jstatck 導出java的進程信息,常用于java程序故障,需要導出線程信息與開發(fā)一起研究
- 格式:jstack -l pid
[root@localhost ~]#? jstack -l 7457
3.Tomcat故障案例
系統(tǒng)負載高,tomcat占用CPU較高
- 1.jps/top/htop精確確定哪個java進程導致
- 2.jstack導出java線程
- 3.catalina.out日志分析
- 4.jmap導出jvm信息,可以通過mat工具進行分析
4.配置Tomcat JMX監(jiān)控
- 自定義監(jiān)控:直接在tomcat服務器上寫好腳本,在zabbix配置文件寫好就行
- 首先需要在zabiix服務端安裝zabbix-java-gateway然后在tomcat服務器開啟監(jiān)控功能
- tomcat開啟jmx監(jiān)控功能
#修改bin/catalina.sh [root@localhost tomcat]# vim bin/catalina.sh #注意不能分行寫會報錯找不到命令,要寫在一行上 CATALINA_OPTS="$CATALINA_OPTS" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jxmremote.ssl=false -Djava.rmi.server.hostname="192.168.81.210" #正確寫法 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jxmremote.ssl=false -Djava.rmi.server.hostname=192.168.81.210" #說明 CATALINA_OPTS="$CATALINA_OPTS" #修改tomcat啟動參數(shù) -Dcom.sun.management.jmxremote #開啟tomcat遠程管理功能 -Dcom.sun.management.jmxremote.port=12345 #遠程管理功能,除了12345端口,還會生成2個隨機端口,我們可以開放所有端口 Dcom.sun.management.jmxremote.authenticat=false #是否在監(jiān)控時需要認證 -Dcom.sun.management.jmxremote.ssl=false #是否開啟ssl連接 -Djava.rmi.server.hostname="192.168.81.210" #設置tomcat所在服務器的ip 配置完成后重啟tomcat即可 使用ps命令可以看到輸出的信息多了我們寫入的幾行 [root@localhost tomcat]# ps aux | grep java root 17786 5.7 10.6 2306592 105860 pts/1 Sl 15:52 0:08 /application/jdk/bin/java -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jxmremote.ssl=false -Djava.rmi.server.hostname=192.168.81.210 -Dignore.endorsed.dirs= -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start 使用ss/netstat 命令可以看到多出啦的三個端口 [root@localhost tomcat]# ss -lnptu | grep java tcp LISTEN 0 100 :::8080 :::* users:(("java",pid=17786,fd=56)) #我們制定的 tcp LISTEN 0 50 :::12345 :::* users:(("java",pid=17786,fd=22)) #隨機的1 tcp LISTEN 0 50 :::46272 :::* users:(("java",pid=17786,fd=21)) #隨機的2 tcp LISTEN 0 50 :::46081 :::* users:(("java",pid=17786,fd=24)) tcp LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",pid=17786,fd=65))
5.使用Jsconsole連接JMX查看監(jiān)控數(shù)據(jù)
到此這篇關于教你如何通過JConsoler監(jiān)控Tomcat的JVM內(nèi)存的文章就介紹到這了,更多相關JConsoler監(jiān)控Tomcat JVM內(nèi)存內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。