from: http://www.iteye.com/problems/10072
最近客戶反映經常抛出記憶體溢出的異常,在下面貼出一部分異常資訊,希望大家能幫我分析一下,找出原因,萬分感激!
[CLOSE] ID:107 28000 [ACTION : get_mod ]
Exception in thread "Thread-2" 2008-12-28 5:58:29 org.apache.catalina.connector.
CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 6:05:33 org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
嚴重: Socket accept failed
java.lang.OutOfMemoryError: Java heap space
2008-12-28 6:05:33 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
2008-12-28 6:05:33 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
[OPEN ] ID:767 [ACTION : auth ] Sun Dec 28 06:25:33 CST 2008
[CLOSE] ID:767 37547 [ACTION : auth ]
2008-12-28 6:37:18 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet JSLabelModule threw exception
java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-6" java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:24:30 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:25:16 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:45:59 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:24:58 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:24:48 unknown unknown
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:24:30 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:45:59 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:45:59 org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
嚴重: Socket accept failed
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:45:59 unknown unknown
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 7:42:50 unknown unknown
嚴重: Exception initializing page context
java.lang.OutOfMemoryError: Java heap space
Exception in thread "catalina-exec-7282" java.lang.OutOfMemoryError: Java heap space
Exception in thread "catalina-exec-7268" java.lang.OutOfMemoryError: Java heap space
Exception in thread "catalina-exec-7256" java.lang.OutOfMemoryError: Java heap space
2008-12-28 8:40:54 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 8:18:35 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 8:18:23 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
2008-12-28 8:18:23 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:45:57 org.apache.coyote.http11.Http11Processor process
嚴重: Error finishing response
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:41:37 org.apache.coyote.http11.Http11Processor process
嚴重: Error finishing response
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:31:58 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
Exception in thread "catalina-exec-7292" java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:26:44 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:12:52 unknown unknown
嚴重: Error reading request, ignored
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:12:52 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:12:45 unknown unknown
嚴重: Error reading request, ignored
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:11:42 org.apache.catalina.connector.CoyoteAdapter service
嚴重: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:11:05 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:07:10 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet aeAction threw exception
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:05:48 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:03:57 org.apache.coyote.http11.Http11Processor process
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 10:12:15 unknown unknown
嚴重: Error processing request
java.lang.OutOfMemoryError: Java heap space
2008-12-28 10:08:58 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler process
嚴重: Error reading request, ignored
java.lang.OutOfMemoryError: Java heap space
2008-12-28 9:53:32 org.apache.coyote.http11.Http11Processor process
嚴重: Error finishing response
java.lang.OutOfMemoryError: Java heap space
還有:
2008-12-19 16:48:05 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet aeAction threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
[aeAction CLOSE] ID:443 9890 [ACTION : ae_get_itm ]
2008-12-19 16:48:15 org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
SEVERE: Socket accept failed
java.lang.OutOfMemoryError: GC overhead limit exceeded
2008-12-19 16:48:15 org.apache.catalina.connector.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: GC overhead limit exceeded
2008-12-19 16:48:15 org.apache.catalina.connector.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-80-Acceptor-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
[CLOSE] ID:941 64063 [ACTION : home ]
2008-12-19 16:48:25 org.apache.catalina.connector.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: GC overhead limit exceeded
2008-12-19 16:48:25 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet qdbAction threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
[OPEN ] ID:930 [ACTION : aff_auth ] Fri Dec 19 16:48:41 CST
2008
current stylesheet:
***validDigest=true
***validDateRange=true
load security file servlet
[CLOSE] ID:930 31 [ACTION : aff_auth ]
[OPEN ] ID:14 [ACTION : home ] Fri Dec 19 16:48:41 CST 2008
[CLOSE] ID:14 16 [ACTION : home ]
2008-12-19 16:48:41 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet qdbAction threw exception java.lang.OutOfMemoryError: GC overhead limit exceeded
問題補充:
jvm的記憶體已經設定1G了,估計跟這個沒關.
該問題已經關閉: 超過15天由系統自動關閉,懸賞平分給所有參與回答的會員
問題答案可能在這裡
關于“java.lang.OutOfMemoryError: PermGen space”的問題
JAVA應用Crash錯誤分析
jBPM-JPDL v3.2環境部署——釋出到Tomcat + MySQL
xception in thread "Task-Thread-for-com.mchange.v2
伺服器tomcat異常!!!急啊
回答
這些異常都比較正常,都是拿不到記憶體而引起的。
估計你的應用有記憶體洩露問題,做一個壓力測試,跟蹤一下記憶體使用情況。
taopian (進階程式員) 2009-01-12
有一種解決方案:
修改tomcat記憶體大小,有時候當應用程式所需記憶體大于tomcat所配置設定的最大記憶體時候會報這個錯誤!修改記憶體大小一般能得到解決!
修改代碼如下:
修改tomcat的bin目錄下的Catalina.bat檔案
在166行"rem Execute Java with the applicable properties "以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 中的%CATALINA_OPTS% 替換成-Xms128m -Xmx512m
注意:需要的話每個tomcat可以都進行設定大小.
tomcat記憶體最大可以支援1024MB
可以配置tomcat叢集來緩解伺服器壓力
houday123 (初級程式員) 2009-01-12
get_mod
auth
ae_get_itm
home
aff_auth
這幾個Action的代碼可能有記憶體洩漏的;仔細檢查下.
最好的辦法是如果有dump檔案,最好了;
Java_options添加如下2個參數;
(JDK要求:1.4.2 update 12以上 或者 5.0 update 7.以上)
-XX:HeapDumpPath=./dumpfile.hprof
-XX:+HeapDumpOnOutOfMemoryError
然後用HeapAnalyser分析下dump檔案; 這樣最直接.
bohemia (架構師) 2009-01-12
硬體問題也會造成 tomcat記憶體溢出
yinxuchina (初級程式員) 2009-01-12
還是分析一些記憶體吧,找到記憶體洩露的源頭。
把記憶體搞大,無非就是能多撐一會而已,:)。
taopian (進階程式員) 2009-01-13
引用
jvm的記憶體已經設定1G了,估計跟這個沒關.
的确是這樣,與這個關系不太,與自己應用的記憶體洩露相關。用JConsole或者JProfile來診斷。
lewhwa (資深架構師) 2009-01-13
-Xms256m -Xmx512m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m
加上這個參數肯定好用
UniverseYuSun (初級程式員) 2009-01-13
首先樓主應該用的是sun或者hp的jdk,其實hp jdk在jvm設計和參數上一直跟sun走的很近,基本都是一樣的,從異常資訊 java.lang.OutOfMemoryError: Java heap space 來看,出現outofmemory,sun跟hp的jdk oom問題,無非兩種情況,一種是heap區用盡,一種是perm區用盡,heap區是用來存儲對象的執行個體,perm區存儲的是class資訊,也就是說,如果應用裡大量使用反射機制,動态生成很多class,則可能需要用-XX:PermSize=xxx 和 -XX:MaxPermSize=xxx來調大一些perm區容量。從目前列印的error log來看,是heap區用盡,針對oom問題,需要綜合考慮業務邏輯和現在記憶體使用情況,如果業務并發較大,應用中使用session,或者cache比較多,則需要較大的heap size,如果并發并不大,則需要檢查是否存在記憶體洩漏情況。如上邊的兄弟所說,可在啟動參數中,%Java_options%添加如下2個參數;
(JDK要求:1.4.2 update 12以上 或者 5.0 update 7.以上)
-XX:HeapDumpPath=./dumpfile.hprof
-XX:+HeapDumpOnOutOfMemoryError
關于jdk版本檢查,可以用 java -version 來看一下
另外,如果oom問題出現的頻率非常低,要隔很長時間才會重制,也就是說,記憶體洩漏比較慢,可以加上jvm參數 -XX:+HeapDumpOnCtrlBreak 這個參數在Sun/HP JDK 1.4.2.11 JDK
1.5.0.05以上版本支援。啟動server後,按ctrl+break應該會生成java_<pid>.hprof.<milltime>的binary檔案,可以用類似heapanalyser這樣的工具來分析是否有記憶體洩漏。
或者還有另外一個辦法,打開jvm的gc log,-Xverbosegc:file=filename,生成的gc log,可以用jmeter來打開分析,主要是看heap size after gc,如果曲線一直在緩慢上升,說明有洩漏問題。