java性能優化 –gc日誌收集與分析

使用jvisualvm與jconsole可以實時監控java程序的運行狀態。
可是咱們並不會一直盯着輸入屏幕,或者說開着一個客戶端一直抓取服務器的運行信息。相對來講,可以讓java程序在運行的時候自動生成日誌,而後咱們再對生成的數據進行分析是比較不錯的選擇。java

收集日誌

打印Gc日誌的參數

打印gc詳細信息tomcat

-XX:+PringGCDetails

帶有距離JVM開始運行的時間戳安全

-XX:+PrintGCTimeStamps

帶有日曆時間戳服務器

--XX:+PringGCDateStamps

指定gc日誌存放文件(不指定則控制檯打印)svn

-Xloggc:

針對高延遲問題調優HotSpot VM時,下面兩個命令行選項特別有用,經過它們能夠得到應用程序因爲執行VM安全操做而阻塞的時間以及兩個安全點操做之間應用程序運行的時間。工具

-XX:+PrintGCApplicationStoppedTime-XX:+PrintGCApplicationConcurrentTime

何謂安全操做:安全操做使JVM進入到一種狀態:全部的java應用線程都被阻塞、執行本地代碼的線程都被禁止返回VM執行Java代碼。安全操做經常使用於虛擬機須要進行內部操做時,此時全部的Java線程都被顯式地置於阻塞狀態且不能修改Java堆的狀況。性能

設置參數

Tomcat
$CATALINA_HOME/bin/setenv.sh文件
加入:網站

#opts for gc logexport CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDetails"export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCTimeStamps"export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDateStamps"export CATALINA_OPTS="$CATALINA_OPTS -Xloggc:/gc_logs/tomcat.gc.log"

固然,loggc的文件可以自給建立,目錄得先建立好。spa

分析日誌

拿到了日誌,拿眼睛看也是怪累的,並且不拿本教程對着看各個參數時什麼意思還真不怎麼看得懂。過段時間又忘了什麼意思。。。.net

關鍵時「海量」的數據,眼睛哪看的過來,還需須要將日誌轉化成像jconsole、jvisualvm同樣的圖形化看着才方便。

gchistro0

這個工具好像據說比較強大,因此我也寫上。

工程的地址在:https://java.net/projects/gchisto
svn源碼放在:https://svn.java.net/svn/gchisto~svn

然而,雖然它強大,可是我用它分析日誌的時候並無識別出來。
我如今也沒搞清楚是哪裏出了問題.若是有會用的前輩還請指導指導.

gceasy

推薦一個分析gc日誌的網址:http://gceasy.io/
只要上傳日誌文件就可以給出好多有用的分析數據出來。感受仍是很好用的。
後面還會根據這個網站的日誌分析作出性能調優。

博客轉載地址:http://blog.panaihua.com/archives/146

相關文章
相關標籤/搜索