tomcat完結篇,JVM狀態監控與內存調優。

       本篇合適對tomcat和JVM有一定了解的朋友。

常用的內置變量介紹:

CATALINA_BASE  //用於設定可以具有寫權限或者自定義部分的文件存放位置,適用場景,需要在一節點上啓動多個tomcat實例,就可以定義多個CATALINA_BASE。

CATALINA_OPTS //定義JVM的運行屬性

JAVA_OPTS  //定義多個JVM相同運行屬性。

JAVA_HOME  //用於設定java或JDK運行時候的本地位置。

JRE_HOME   //這是一個JAVA_HOME的別名。

瞭解配置文件:
/usr/local/tomcat/conf/catalina.policy  用於定義catalina安全策略
/usr/local/tomcat/conf/catalina.properties 用於定義catalina屬性信息

如何調整JVM堆內存。

我們先通過manager-gui看下當前堆內存大小.

wKioL1PtvGyRrIhKAAIvsmApZZU283.jpg


當前最大內存239.75M我們來將它調整到512M。


定義屬性信息想要在啓動的時候生效,需要定義在/bin/catalina.sh 腳本中。

編輯$CATALINA_HOME/bin/catalina.sh,搜索JAVA_OPTS,找到提示段。

使用以下指令定義:

 JAVA_OPTS="$JAVA_OPTS -Xmx512M"

如圖:

wKiom1Ptv06hBOXwAAGjdeBuFY8631.jpg

然後重啓tomcat服務。

查看狀態

wKiom1PtwI_SUdddAAGXWq3lUTI566.jpg


指令介紹:
    -Xms 128M 設定JVM運行的最小內存
    -Xmx 256M 設定JVM運行的最大內存
    -XX:MaxNewSize  定義新生代最大內存空間
    -XX:MaxPermSize 定義持久帶最大內存空間



接下來看看狀態監控


jstat是一款JVM監控工具我們來看看他的用法:

jstat -<option> <vmid> 顯示頻率 [<count>]


jstat -class pid:顯示加載class的數量,及所佔空間等信息。 
jstat -compiler pid:顯示VM實時編譯的數量等信息。 
jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時間。其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。 
jstat -gccapacity:可以顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小,如:PGCMN顯示的是最小perm的內存使 用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存佔用量,PC是但前perm內存佔用量。其他的可以根據這個類推, OC是old內純的佔用量。 
jstat -gcnew pid:new對象的信息。 
jstat -gcnewcapacity pid:new對象的信息及其佔用量。 
jstat -gcold pid:old對象的信息。 
jstat -gcoldcapacity pid:old對象的信息及其佔用量。 
jstat -gcpermcapacity pid: perm對象的信息及其佔用量。 
jstat -util pid:統計gc信息統計。 
jstat -printcompilation pid:當前VM執行的信息。


例:

  • jstat -gc 8825 1s 5

wKioL1PtwzySFOIfAAIO-JIpgJU797.jpg

參數詳解:

S0:Heap上的 Survivor space 0 段空間大小KB
S1:Heap上的 Survivor space 1 段空間大小KB

S0U:Heap上的 Survivor space 0 段已使用空間大小KB

S1U:Heap上的 Survivor space 1 段已使用空間大小KB

EC:顯示現在Eden空間大小KB

EU:顯示現在Eden已用空間大小KB

OC:顯示現在old空間大小KB

OU:顯示現在old已用空間大小KB

PC:顯示現在持久帶空間大小KB

PU:顯示現在持久帶已用空間大小KB

YGC:從程序啓動到採樣時發生Young GC的次數
YGCT:Young GC所用的時間(單位秒)
FGC:從程序啓動到採樣時發生Full GC的次數
FGCT:Full GC所用的時間(單位秒)
GCT:用於垃圾回收的總時間(單位秒)


再介紹一個圖形化監控工具VisualVM  + Visual GC

VisualVM下載地址:http://visualvm.java.net/download.html

如果機器在連通外網的情況下,可以添加VisualGC插件,顯示更豐富的信息。

monitor

wKioL1Pt2I6CisfXAAN2XKaAcK8645.jpg

Visual GC

wKioL1Pt2O_Tu7p0AAPkhPnz8RM595.jpg


參考資料:http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/


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