溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jvm監(jiān)控工具jps,jstat,jstack,jmap的使用方法

發(fā)布時間:2020-07-03 10:59:27 來源:網(wǎng)絡 閱讀:6867 作者:weilovepan520 欄目:網(wǎng)絡安全

在平常運維分析jvm的時候通常用到的工具的jps,jstat,jstack,jmap用于分析tomcat遇到的各種問題

tomcat常見的問題有:

? OOM,線程死鎖(lock dead),鎖爭用(lock contention),Java消耗過多的CPU

? 可以通過以上工具進行分析

生產(chǎn)常用分析方法快速入口:

? #jps????????--> 查看運行的java進程

? #jstat -gc 進程pid --> 查看進程新生代老年代的內(nèi)存使用情況,年輕代老年代垃圾收集次數(shù)及時間

? #jstat -gccause 進程pid --> 查看進程垃圾收集原因

? #jmap -heap 進程pid --> 查看進程堆內(nèi)存具體使用情況

? #jstack -l 進程pid --> 查看線程信息,用于分析線程爭取,死鎖造成tomcat假死的情況

jps:java虛擬機進程查看工具

? jps [options] [hostid]

?? -m:輸出傳入main方法的參數(shù)

?? -l:顯示main的完整類名

?? -v:顯示為jvm虛擬機指定的參數(shù)

? 常用的組合:

?? #jps -m -l

?? #jps -m -l -v??

[gcct1@localhost?bin]$?jps?-m?-l?-v
5966?org.apache.catalina.startup.Bootstrap?start?-Djava.util.logging.config.file=/mnt/tomcat/conf/logging.properties?-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager?-Djava.endorsed.dirs=/mnt/tomcat/endorsed?-Dcatalina.base=/mnt/tomcat?-Dcatalina.home=/mnt/tomcat?-Djava.io.tmpdir=/mnt/tomcat/temp
7006?sun.tools.jps.Jps?-m?-l?-v?-Denv.class.path=.:/usr/java/jdk1.7.0_79/lib/dt.jar:/usr/java/jdk1.7.0_79/lib/tools.jar?-Dapplication.home=/usr/java/jdk1.7.0_79?-Xms8m

jstat:jvm虛擬機運行時內(nèi)存使用及垃圾回收情況監(jiān)控

? jstat -<option> pid:(<options>為必須選項)

?? -options:查看有哪些選項可以使用

?? -gc:使用此選項時,后面加java的進程號;例jstat -gc 27564 [1s](也可跟上多少時間顯示一次)

???? S0C,S1C:表示第一個和第二個生存區(qū)的容量
???? S0U,S1U:表示第一個和第二個生存區(qū)的已使用的容量
???? EC,EU:表示eden區(qū)域的容量和已用量
???? OC,OU:表示老年代區(qū)的容量和已用量
???? PC,PU:表示持久代的內(nèi)存容量和已用量
???? YGC,YGT:表示新生代的GC發(fā)生的次數(shù)和耗時
???? FGCT,FGCT:表示老年代Full GC發(fā)生的次數(shù)和耗時
???? GCT:表示總的GC耗時

?? -gccause:
??? LGCC:上次GC的原因
??? GCC:當前GC的原因

[gcct1@localhost?bin]$?jstat?-gc?5966
?S0C????S1C????S0U????S1U??????EC???????EU????????OC?????????OU???????PC?????PU????YGC?????YGCT????FGC????FGCT?????GCT???
40960.0?36864.0??0.0???36850.3?253952.0?161159.5??109056.0???74574.4???53248.0?45852.6?????19????1.672???3??????2.193????3.865
[gcct1@localhost?bin]$?jstat?-gccause?5966
??S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT????LGCC?????????????????GCC?????????????????
??0.00??99.96??63.76??68.38??86.11?????19????1.672?????3????2.193????3.865?Allocation?Failure???No?GC

jmap:查看堆內(nèi)存使用情況,包括使用的GC算法,堆配置參數(shù)和各代堆內(nèi)存使用情況,跟jstat有點類似

? -heap:詳細的輸出堆內(nèi)存的使用情況
? -histo:顯示所有的對象信息
? -histo:live:手動觸發(fā)full GC,然后顯示存活的對象信息(常用于老年代調優(yōu))
? -h:獲取幫助信息
?? 例:jmap -heap 5966 ? --> 查看堆內(nèi)存的詳細使用情況

[gcct1@localhost?bin]$?jmap?-heap?5966
Attaching?to?process?ID?5966,?please?wait...
Debugger?attached?successfully.
Server?compiler?detected.
JVM?version?is?24.79-b02

using?thread-local?object?allocation.
Parallel?GC?with?2?thread(s)

Heap?Configuration:
???MinHeapFreeRatio?=?0
???MaxHeapFreeRatio?=?100
???MaxHeapSize??????=?1019215872?(972.0MB)
???NewSize??????????=?1310720?(1.25MB)
???MaxNewSize???????=?17592186044415?MB
???OldSize??????????=?5439488?(5.1875MB)
???NewRatio?????????=?2
???SurvivorRatio????=?8
???PermSize?????????=?21757952?(20.75MB)
???MaxPermSize??????=?85983232?(82.0MB)
???G1HeapRegionSize?=?0?(0.0MB)
......

jstack:查看某個java進程內(nèi)的線程堆棧信息

? jstack [options] pid
? -l:long listings(會輸出完整的鎖信息);jstack -l 進程號
? -m:混合模式,即會輸出java堆棧及C/C++堆棧信息

? 通過jstack可以查看線程爭用,線程死鎖等信息

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI