新聞中心
在平常運維分析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 -
-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,然后顯示存活的對象信息(常用于老年代調(diào)優(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可以查看線程爭用,線程死鎖等信息
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)站欄目:jvm監(jiān)控工具jps,jstat,jstack,jmap的使用方法-創(chuàng)新互聯(lián)
本文來源:http://www.dlmjj.cn/article/hijej.html