Java堆空間錯誤,我們在生產中春2.0.8應用,在Tomcat的5.5.x和JRE 1.5.x的運行(是的,我知道,我們應該升級,這不是現在的問題),使用Oracle 11g作爲我們的DB選擇。突然在Tomcat 5.5
我們已經在幾個月前升級應用程序(我說7月)和在過去一個月已經從Oracle 10g中切換到Oracle 11g左右(也改變了Oracle JDBC驅動程序相匹配的數據庫版本)。
我們一直有在生產造成了嚴重和意想不到的問題。截至前一天,相隔數小時的時間內出現了堆空間OutOfMemory錯誤。這反過來會使響應時間減慢大約100倍,或者用戶無法連接。
我們的設置是:
- Windows機器運行服務器
- 的Apache 2.2和Tomcat 5.5 SSO啓用,總內存:128MB,最大內存:512MB
- 春2.0.8的webapp
- 的Oracle 11g
由於注意到這個錯誤,這就是我們的嘗試:
- 檢查出的日誌 - 似乎沒有成爲一個模式。 顯然,日誌只能告訴你,當服務器的內存不足,所以 他們表現出的,而不是點 問題出在哪裏開始
- 重新啓動服務器
- 重新安裝Tomcat的
- 增加量不再工作的地步, Tomcat可以使用的內存 - 這只是延長了這個問題,當然Tomcat吃了就和我們一樣吃了
- 全新安裝了服務器和Apache + Tomcat
- 生成堆轉儲 - 沒有什麼壯觀的東西似乎與衆不同,大多數內存用於啓動t他申請
- 檢查DB - 它的優良,快速反應,沒有鎖
我找出來對自己能做什麼的想法。我們總共有5種不同的產品具有相同的設置,這個問題是用戶和數據的最小數量。
您是否啓用GC日誌記錄?你的服務器是否在異常時產生堆轉儲? –
如何去做這件事?作爲一名開發人員,我並不以我對服務器管理知之甚少的事實感到自豪。我認爲我們設置了熱量轉儲以產生按需和異常內存異常。 – eagerMoose
您是否在監視JVM進程中的內存使用量與請求和加載的數量? –