JVM常見問題排查系列【001】常見服務器端命令以及相應功能描述

本文命令摘自:深入理解JVM虛擬機

JVM常見排查命令:

名稱 主要作用
jps JVM Proces status Tool,顯示指定系統內所有的HotSpot虛擬進程
jstat JVM Statistics Monitoring Tool ,用於手機HotSpot 虛擬機各方面的運行數據
jinfo Configuration info for java ,顯示虛擬機配置信息
jmap Memory Map for java ,生成虛擬機的內存轉儲快照(heapdump文件)
jhat JVM Heap Dump Browser ,用於分析heapdump 文件,它會建立一個HTTP/HTML服務器,讓用戶可以在瀏覽器上查看分析結果
jstack Stack Trace for java ,顯示虛擬機的線程快照

1. JPS命令解析 以及使用樣例

命令格式:

jps [options] [hostid]

jps 執行樣例:

其實最主要的是拿到相應JAR的相應的進程的pid

有可能拿不到,這種狀況一般的情況是權限不足,找運維人員申請相應的權限就行了

通過上圖可以看出,jar包的啓動的參數,堆的設置,端口號的設置,

jps工具主要選項描述:

選項 作用
-q 只輸出LVMID,省略主類的名稱
-m 輸出虛擬機進程啓動的時候傳遞給主類main()函數的參數
-l 輸出主類的全名,如果進程執行的是jar包,輸出jar路徑
-v 輸出虛擬機進程啓動的時候JVM 參數

 

2.jstat :虛擬機統計信息監視工具

    作用描述:顯示虛擬機進程中的類的裝載,內存,垃圾收集,JIT編譯等運行數據,生產服務器排查問題的首選工具

jstat 命令格式:

jstat [option vmid [interval [s|sm][ count]]]

對於命令格式中的VMID,與LVMID需要進行特別說明一下:

如果是本機虛擬機進程,VMID和LVMID一致,如果是遠程虛擬機進程,那VMID的格式應當是:

[protocol:][//]lvmid[@hostname][:port]/servername]

參數interval 和count 代辦查詢間隔和次數,如果省略這兩個參數,說明只查詢一次。

假設 需要每250毫秒查詢一次進程29919 垃圾收集情況,一共查詢20此,那命令應當是:

jstat -gc 29919 250 20

如下圖:

選項 option 代辦這用戶希望查詢的虛擬機信息,主要分爲3類:類裝載,垃圾收集,運行編譯情況,具體選項以及作用如下圖描述

選項 作用
-class 監視類裝載,卸載數量,總空間以及類裝載所耗費的時間
-gc

監視JAVA堆情況,包括Eden區,兩個Surivor區,老年代、永久代等的容量,已用空間,GC時間合計等信息

-gccapacity 監視內容與-gc 基本相同,但是輸出主要關注Java堆各個區域使用到最大,最小空間,
-gcutil 監視內容與-gc基本相同,但輸出主要關注已使用空間佔總空間的百分比
-gccause 與-gcutils功能意義,但是會額外輸出導致上上一次GC產生的原因
-gcnew 監視新生代GC狀況
-gcnewcapacity 監視內容與-gcnew基本相同,輸出主要關注使用到的最大,最小空間
-gcold 監視老年代GC狀況
-gcoldcapcity 監視內容與-gcold基本相同,輸出主要關注使用到的最大,最小空間
-gcpermcapacity 輸出永久代使用的最大,最小空間
-compiler 輸出JIT編譯器編譯過的方法,耗時等信息
-printcompilation 輸出已經被JIT編譯的方法

抽個有代表性的

上圖結果表明:這臺服務器的新生代Eden區(E,表示Eden)使用了65.48%的空間,兩個Surivor區(S0,S1,表示Survivor0,Survivor1)其中survivor1 100%,老年代(O,表示Old)使用了17.18%。程序運行依賴工發生 Minor GC (YGC ,表示Young GC)25次, YGCT代辦 耗時:1.075秒。發生Full GC (FGC,表示 Full GC)2次,FGCT 代表Full GC 總耗時 0.051秒,所有GC總耗時  (GCT)1.126秒

後續命令 ,且看下節分享

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章