【轉】JVM統計監控工具-jstat

原文連接 http://www.javaranger.com/archives/575java



jstat概要
 
幫助
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
 
 
generalOption
通用命令行選項 (-help, -options, or -version)
 
outputOptions
若干個輸出選項(output option),能夠包括單個statOption,加上其餘的-t, -h 或者-J選項。
 
vmid
虛擬機ID(Virtual machine identifier), 表明目標JVM的字符串.vimid的通常語法格式是
[protocol:][//]lvmid[@hostname[:port]/servername]
該語法和URI的語法相似. vmid能夠是個數字,也能夠由協議+主機名+端口等更復雜的字串組成。
 
interval[s|ms]
採樣時間間隔,以秒或者ms爲單位,缺省爲毫秒,必須是個正整數。設定此參數值後,jstat會在每一個採樣間隔內輸出結果。
 
count
要顯示的樣本個數,缺省爲無窮大,即直到目標JVM進程終結或者jstat進程終結爲止,值必須是個正整數。
 
 
描述
jstat命令工具用於顯示JVM的性能統計數據,目標虛擬機用vmid標示。
 
VIRTUAL MACHINE IDENTIFIER(VMID)
語法:
 
[protocol:][//]lvmid[@hostname][:port][/servername]
protocol
通信協議,若是protocol 和hostname都未指定,則採用平臺自身的最優本地協議,
若是protocol 未指定可是hostname指定了,則缺省協議爲rmi。
 
lvmid
本地虛擬機標識(The local virtual machine identifier for the target JVM),是vmid惟一一個必需指定的參數值。
The lvmid 經常是操做系統目標JVM的進程ID,你能夠用jps命令或者ps命令來查看lvmid。
 
hostname
主機名或者IP地址,未指定的話默認爲localhost.
 
port
與遠程服務器通信的缺省端口,若是hostname或者protocol都未指定的話,port也沒必要指定。
對於缺省的rmi協議,port指的是遠程主機註冊的rmi端口號,缺省爲1099。
 
servername
若是protocol指定爲本地最優協議(the optimized local protocol ),則該字段可忽略,
對於rmi協議,servername表明的是遠程主機中RMI遠程對象的名字。
 
參數選項
jstat命令支持兩種參數,通用參數(general options)和輸出參數(output options)。
通用參數用於顯示jstat的基本用法和版本信息,輸出參數決定了輸出的統計數據的格式和內容。
 
通用選項(GENERAL OPTIONS)
有排他性,指定通用參數的其中一個則不能指定其餘參數,包括其餘通用參數和輸出參數選項。
 
-help
幫助信息
-version
版本信息
-options
顯示輸出選項參數列表
 
輸出選項(OUTPUT OPTIONS)
若是不設定通用選項,則能夠設定輸出選項。輸出選項決定了jstat命令的輸出內容和格式,
它能夠包含單個statOption,外加其餘輸出命令(-h, -t 和-J).
statOption 必須放在前面。如jstat -gccapacity -t 1234
 
輸出內容被格式化爲表格的形式,第一行爲每一列的列明。可使用-h參數來指定每隔多少行顯示行名,
如jstat -gcnewcapacity -h 2 31538 250 7表示顯示垃圾回收新生代的容量統計,
每兩行顯示一次列名,採樣時間間隔爲250ms,共採樣7次。
 
使用-t參數顯示時間戳,做爲第一列輸出,列名爲Timestamp它表示自從目標JVM啓動以來逝去的時間,以秒爲單位。
 
使用interval 和 count 參數來決定採樣的頻度和時間,如上個例子所示。
 
注意: jstat 輸出內容格式在之後的版本中可能改變,因此不建議本身寫腳原本解析。
 
-statOption
決定jstat 顯示的統計信息。
下表列出了可用的選項(同事顯示英文方便查看各個縮寫的含義)。可使用 -options查看系統平臺上安裝了哪些選項。
Option Displays…
class class loader的行爲統計。Statistics on the behavior of the class loader.
compiler HotSpt JIT編譯器行爲統計。Statistics of the behavior of the HotSpot Just-in-Time compiler.
gc 垃圾回收堆的行爲統計。Statistics of the behavior of the garbage collected heap.
gccapacity 各個垃圾回收代容量(young,old,perm)和他們相應的空間統計。Statistics of the capacities of the generations and their corresponding spaces.
gccause 垃圾收集統計概述(同-gcutil),附加最近兩次垃圾回收事件的緣由。Summary of garbage collection statistics (same as -gcutil), with the cause of the last and
current (if applicable) garbage collection events.
gcnew 新生代行爲統計。Statistics of the behavior of the new generation.
gcnewcapacity 新生代與其相應的內存空間的統計。Statistics of the sizes of the new generations and its corresponding spaces.
gcold 年老代和永生代行爲統計。Statistics of the behavior of the old and permanent generations.
gcoldcapacity 年老代行爲統計。Statistics of the sizes of the old generation.
gcpermcapacity 永生代行爲統計。Statistics of the sizes of the permanent generation.
gcutil 垃圾回收統計概述。Summary of garbage collection statistics.
printcompilation HotSpot編譯方法統計。HotSpot compilation method statistics.
-h n
每隔n個樣本 (行),n是正整數,
缺省爲0,表明只有第一行爲列頭。
-t n
第一行輸出爲時間戳,
它表示自從目標JVM啓動以來逝去的時間,以秒爲單位。
-JjavaOption
傳遞javaOption到java啓動參數。
好比,-J-Xms48m 設置java啓動最小內存爲48M。
完整得啓動參數清單,請查看:
java – the Java application launcher (Solaris)
java – the Java application launcher (Linux)
java – the Java application launcher (Windows)
 
-class Option
類加載器統計信息。Class Loader Statistics
列名 描述
Loaded 已加載的類個數。
Bytes 已加載類佔用字節數(KB爲單位)。
Unloaded 卸載的類個數。
Bytes 卸載的類佔用字節數(KB爲單位)。
Time 加載和卸載操做花費的時間。
-compiler Option
HotSpt JIT編譯器行爲統計
列名 描述
Compiled 執行過的編譯任務個數
Failed 編譯失敗次數
Invalid 失效的編譯任務個數
Time 編譯任務執行花費的時間
FailedType 失敗的編譯任務類型
FailedMethod 上次編譯失敗的類名和方法
-gc Option
垃圾回收統計
列名 描述
S0C 當前survivor space 0容量。Current survivor space 0 capacity (KB).
S1C survivor space 1容量。Current survivor space 1 capacity (KB).
S0U Survivor space 0 利用狀況。Survivor space 0 utilization (KB).
S1U Survivor space 1 利用狀況。Survivor space 1 utilization (KB).
EC 當前新生代eden空間容量。Current eden space capacity (KB).
EU 新生代eden空間利用狀況。Eden space utilization (KB).
OC 當前年老代空間容量。Current old space capacity (KB).
OU 年老代利用狀況。Old space utilization (KB).
PC 當前永生代空間容量。Current permanent space capacity (KB).
PU 永生代空間利用狀況。Permanent space utilization (KB).
YGC 新生代GC事件次數。 Number of young generation GC Events.
YGCT 新生代GC耗時。Young generation garbage collection time.
FGC full GC次數。Number of full GC events.
FGCT full gc耗時。Full garbage collection time.
GCT 總GC耗時。Total garbage collection time.
-gccapacity Option
GC內存空間使用統計
列名 描述
NGCMN 最小新生代容量。Minimum new generation capacity (KB).
NGCMX 最大新生代容量。Maximum new generation capacity (KB).
NGC 當前新生代容量。Current new generation capacity (KB).
S0C 當前新生代survivor 0區容量。Current survivor space 0 capacity (KB).
S1C 當前新生代survivor 1區容量。Current survivor space 1 capacity (KB).
EC 當前新生代eden空間容量。Current eden space capacity (KB).
OGCMN 最小年老代容量。Minimum old generation capacity (KB).
OGCMX 最大年老代容量。Maximum old generation capacity (KB).
OGC 當前年老代容量。Current old generation capacity (KB).
OC 當前年老代空間容量。Current old space capacity (KB).
PGCMN 最小永生代容量。Minimum permanent generation capacity (KB).
PGCMX 最大永生代容量。Maximum Permanent generation capacity (KB).
PGC 當前永生代容量。Current Permanent generation capacity (KB).
PC 最小永生代空間容量。Current Permanent space capacity (KB).
YGC 新生代GC次數。Number of Young generation GC Events.
FGC Full GC次數。Number of Full GC Events.
-gccause Option
垃圾收集統計概述(同-gcutil),附加最近兩次垃圾回收事件的緣由。
相對 -gcutil給出的統計數據, gccause新增瞭如下幾列:
 
Garbage Collection Statistics, Including GC Events
列名 描述
LGCC 上次GC緣由。Cause of last Garbage Collection.
GCC 本次GC緣由。Cause of current Garbage Collection.
-gcnew Option
新生代統計
列名 描述
S0C 當前survivor 0區容量。Current
survivor space 0 capacity (KB).
S1C 當前survivor 1區容量。Current
survivor space 1 capacity (KB).
S0U 當前survivor 0區利用狀況。
Survivor space 0 utilization (KB).
S1U 當前survivor 1區利用狀況。
Survivor space 1 utilization (KB).
TT 閥值, 用於控制對象在新生代存活的次數。
Tenuring threshold.
MTT 閥值, 用於控制對象在新生代存活的最大次數。Maximum tenuring threshold.
DSS 指望存活大小。
Desired survivor size (KB).
EC 當前eden空間容量。Current eden space capacity (KB).
EU eden空間利用狀況。
Eden space utilization (KB).
YGC 年輕代gc次數。Number of young generation GC events.
YGCT 年輕代GC耗時。
Young generation garbage collection time.
note: 若某個age上的survivor space對象的大小若是超過Desired survivor size,則從新計算tenuring threshold,以age和MaxTenuringThreshold的最小值爲準
 
-gcnewcapacity Option
新生代空間統計
列名 描述
NGCMN 最小新生代容量。Minimum new generation capacity (KB).
NGCMX 最大新生代容量。Maximum new generation capacity (KB).
NGC 當前新生代容量。Current new generation capacity (KB).
S0CMX 最大survivor 0區容量。Maximum survivor space 0 capacity (KB).
S0C 當前survivor 0區容量。Current survivor space 0 capacity (KB).
S1CMX 最大survivor 1區容量。Maximum
survivor space 1 capacity (KB).
S1C 當前survivor 1區容量。Current survivor space 1 capacity (KB).
ECMX 最大eden區容量。Maximum eden space capacity (KB).
EC 當前eden區容量。Current eden space capacity (KB).
YGC young gc次數。
Number of young generation GC events.
FGC full gc次數。Number of Full GC Events.
-gcold Option
年老代和永久代統計
列名 描述
PC 當前永久代空間容量。Current permanent space capacity (KB).
PU 永久代空間利用狀況。Permanent space utilization (KB).
OC 當前年老代空間容量。Current old space capacity (KB).
OU 年老代空間利用狀況。
old space utilization (KB).
YGC young gc次數。
Number of young generation GC events.
FGC full gc次數。Number of full GC events.
FGCT full gc耗時。
Full garbage collection time.
GCT gc總耗時。
Total garbage collection time.
-gcoldcapacity Option
年老代統計
列名 描述
OGCMN 最小年老代容量。Minimum
old generation capacity (KB).
OGCMX 最大年老代容量。Maximum
old generation capacity (KB).
OGC 當前年老代容量。Current
old generation capacity (KB).
OC 當前年老代空間容量。Current
old space capacity (KB).
YGC young gc次數。
Number of young generation GC events.
FGC full gc次數。
Number of full GC events.
FGCT full gc耗時。Full garbage collection time.
GCT 總GC耗時。
Total garbage collection time.
-gcpermcapacity Option
永生代統計
列名 描述
PGCMN Minimum permanent generation capacity (KB).
PGCMX Maximum permanent generation capacity (KB).
PGC Current permanent generation capacity (KB).
PC Current permanent space capacity (KB).
YGC Number of young generation GC events.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.
-gcutil Option
Summary of Garbage Collection Statistics
列名 描述
S0 survivor 0區利用率。
Survivor space 0 utilization as a percentage of
the space’s current capacity.
S1 survivor 1區利用率。
Survivor space 1 utilization as a percentage of
the space’s current capacity.
E eden區利用率。
Eden space utilization as a percentage of
the space’s current capacity.
O 年老代空間利用率。
Old space utilization as a percentage of
the space’s current capacity.
P 永生代空間利用率。Permanent space utilization as a percentage of
the space’s current capacity.
YGC young gc次數。
Number of young generation GC events.
YGCT young gc耗時。
Young generation garbage collection time.
FGC full gc次數。
Number of full GC events.
FGCT full gc耗時。
Full garbage collection time.
GCT GC總耗時。
Total garbage collection time.
-printcompilation Option
HotSpot Compiler Method Statistics
列名 描述
Compiled 執行的編譯任務次數
Size Number of bytes of bytecode for the method.
Type 編譯類型。Compilation type.
Method 類名和方法名。類名使用」/」代替了原命名空間符號」.」
 
範例
 
如下範例表明了針對本地JVM(lvmid 爲21891)的一些統計。
 
gcutil 使用範例
 
使用-gcutil展現gc統計信息,每一個250ms採樣一次,共採樣7次。
 
jstat -gcutil 21891 250 7
S0 S1 E O P YGC YGCT FGC FGCT GCT
12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672
12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672
12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672
0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673
該範例顯示了在第三和第四樣本間發生了一次新生代GC,耗時0.001秒。
本次gc將一些對象從eden區(E)移至年老代空間(O),致使年老代空間
利用率從9.49%升至9.51%。在本次gc以前,survivor區利用率爲12.44%,gc
以後變爲7.44%。
 
重複顯示列名
 
本範例展現了利用-h3選項使-gcnew的輸出內容每3行顯示一次列名。
 
jstat -gcnew -h3 21891 250
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203
64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203
64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204
64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204
64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204
該範例展現了兩次gc操做,第一次young gc發生在第二個樣本和第三個樣本之間,
持續了0.001秒。此次gc發現了 survivor 0區使用量超過了DSS,因而將對象移到了
老生代,TT從31降到了2.
 
另外一次gc發生在第5和第6個樣本間,此次gc將TT重設回31.
 
包含時間戳的範例
 
本範例每隔250ms採樣一次共採樣3次。
-t 選項用於在第一列顯示時間戳。
 
jstat -gcoldcapacity -t 21891 250 3
Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT
150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799
150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
Timestamp列顯示了自從目標JVM啓動以來逝去的時間,以
秒爲單位。另外,-gcoldcapacity 選項輸出顯示了年老代容量 (OGC)
和年老代空間佔用一直在增加。第81次Full GC以後OGC從11696KB漲到13820KB。
年老代最大容量爲60544KB,因此空間還夠用。
 
監控遠程JVM
 
本範例顯示了使用-gcutil 選項監控了系統名字爲remote.domain lvmid 爲40496的JVM,
每一秒輸出一次。
 
jstat -gcutil  40496@remote.domain 1000
… 輸出略
lvmid加遠程主機名稱組成了vmid  40496@remote.domain。vmid採用了
rmi協議鏈接遠程主機缺省的jstatd服務。jstatd服務使用rmiregistry註冊了1099端口
相關文章
相關標籤/搜索