tomcat記憶體溢位問題監控工具
針對杭州數字電視系統記憶體溢位的問題,對tomcat做了兩種監控方式。
注:以下配置都配置到catalina.sh檔案中。
一、gclog,這種方式用於觀察記憶體回收情況,顯示的內容如下所示:
211847: [GC 211847: [DefNew: 57509K->1728K(57664K), 0.0321256 secs] 281236K->225664K(523712K), 0.0322686 secs]
212394: [GC 212394: [DefNew: 57663K->1308K(57664K), 0.0330551 secs] 281600K->225730K(523712K), 0.0332203 secs]
212951: [GC 212951: [DefNew: 57244K->1469K(57664K), 0.0277455 secs] 281666K->225899K(523712K), 0.0278909 secs]
如何配置gc log,下面是幾個常用的gclog的配置:
1、開啟gclog,這個步驟是必須的:
JAVA_OPTS="$JAVA_OPTS -verbose:gc"
2、顯示gclog中的時間戳,可選:
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
3、列印gclog的詳細資訊,可選:
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
4、配置gclog的日誌檔案路徑(路徑為自定義),必選:
JAVA_OPTS="$JAVA_OPTS -Xloggc:/traindvb/dvbtrain/tomcat/gclogs/gc.log"
5、重啟tomcat。
如何觀察:
以下面這段為例:
212951: [GC 212951: [DefNew: 57244K->1469K(57664K), 0.0277455 secs] 281666K->225899K(523712K), 0.0278909 secs]
主要以兩個箭頭為參考(->)
第一個箭頭:57244K->1469K,箭頭指向的是新生段的記憶體佔用情況;
第二個箭頭:281666K->225899K,箭頭指向的是回收後的記憶體佔用情況。
圓括號中通常指的是當前申請的記憶體大小。
二、heap dump監測方法。這種方式用於抓取當時tomcat的執行的各模組的記憶體佔用情況,顯示的內容通常如下:
16400 [char 8192 "..............................................................."
24 java.util.HashMap$Entry
56 java.net.URL
56 java.net.URL
32 sun.misc.URLClassPath$JarLoader
24 java.lang.String
24 java.lang.String
24 java.lang.String
24 java.lang.String
80 [java.util.HashMap$Entry
前面的數字表示佔用的位元組數。
如何配置:
1、將動態庫libheapprofile.so,放到/usr/lib/目錄下;
2、在catalina.sh檔案中加入如下配置:
JAVA_OPTS="$JAVA_OPTS -Xrunheapprofile"
3、重啟tomcat即可。
如何觀察:
可參考的文件:
當透過觀察gclog,發現記憶體已經溢位或,記憶體佔用已經超過正常值很多時(
以杭州dtvoss為例:日常佔用在600-700M,較高時會在1500M左右,通常頁面上只要能夠正常使用,記憶體還是正常的,
但是如果記憶體達到1800M-2000M,則視為已經溢位),執行kill -3 [java pid]。
此時(有可能要等1-2分鐘),會在$TOMCAT_HOME/bin下生成一個heap.dump檔案,這個檔案通常要過10分鐘左右
才能完全生成(判斷是否已經生成的辦法是,觀察這個檔案的大小是否還在改變,如果大小停止變化了,則說明已經生
成好了)。
檔案生成後,用 cut -f 2
http://www.mail-archive.com/cocoon-dev@xml.apache.org/msg31401.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-406715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tomcat記憶體溢位問題記錄Tomcat記憶體溢位
- 記憶體溢位問題記憶體溢位
- 記憶體溢位的問題記憶體溢位
- 記憶體和棧溢位問題定位記憶體
- Jprofiler3+Tomcat5監控記憶體的問題Tomcat記憶體
- Tomcat執行時報記憶體溢位Tomcat記憶體溢位
- Nuxtjs node memory 記憶體溢位問題UXJS記憶體溢位
- BufferedImage記憶體洩漏和溢位問題記憶體
- 基礎學習-記憶體溢位問題記憶體溢位
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- Windows Tomcat 記憶體溢位解決方法WindowsTomcat記憶體溢位
- TOMCAT記憶體溢位及大小調整Tomcat記憶體溢位
- 記憶體溢位記憶體溢位
- tomcat記憶體溢位:PermGen space解決方法Tomcat記憶體溢位
- Tomcat中JVM記憶體溢位及合理配置TomcatJVM記憶體溢位
- 關於tomcat伺服器記憶體溢位Tomcat伺服器記憶體溢位
- Java記憶體溢位Java記憶體溢位
- JBOSS記憶體溢位記憶體溢位
- [jenkins]解決jenkins記憶體溢位問題Jenkins記憶體溢位
- 揭露 FileSystem 引起的線上 JVM 記憶體溢位問題JVM記憶體溢位
- 記憶體溢位:native溢位 和 上層溢位記憶體溢位
- tomcat伺服器記憶體溢位解決方法Tomcat伺服器記憶體溢位
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- 記憶體洩漏和記憶體溢位記憶體溢位
- JVM執行緒和記憶體溢位問題排查思路JVM執行緒記憶體溢位
- WebLogic: 記憶體溢位Web記憶體溢位
- java 程式記憶體溢位Java記憶體溢位
- 記憶體溢位的分析記憶體溢位
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- 谷歌安卓5.1.1即將推送:解決記憶體溢位問題谷歌安卓記憶體溢位
- 谷歌安卓5.1.1即將更新 修復記憶體溢位問題谷歌安卓記憶體溢位
- JVM面試問題系列:深入詳解JVM 記憶體區域及記憶體溢位分析JVM面試記憶體溢位
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- Android記憶體溢位分析Android記憶體溢位
- Java記憶體溢位情況Java記憶體溢位
- Flume記憶體溢位錯誤記憶體溢位
- JNI練習-記憶體溢位記憶體溢位