2014-03-25 114 views
0

我遇到了Solr出問題OutOfMemory。情況如下。我們有2個Amazon EC2小型實例(3.5G),每個在Tomcat 6中運行Spring/BlazeDS後端(位於負載均衡器之後)。每個實例都有自己的本地Solr實例。磁盤上的索引大小約爲500M。 JVM設置從幾個月開始(Xms = 512m,Xmx = 768)。我們使用Solr根據他們輸入的個人資料和他們上傳的文件來查找人員。我們不使用Solr更新處理程序,只使用select。更新使用deltaImports完成。每個Tomcat實例中的Spring應用程序都有一個作業,每30秒觸發一次/ dataimport?command = delta-import處理程序。SOLR突然與OutOfMemoryException崩潰

這個效果很好,好幾個月,即使是一年以上,如果我沒錯的話(我對這個項目沒有那麼長時間)。 CPU負載是最低的,特別是一些峯值。

上週我們突然在兩臺機器上都出現了OutOfMemory崩潰。我回顧了過去幾周的變化,但沒有涉及到SOLR。用戶界面中的錯誤修復,與電子郵件相關的一些問題,但是又是如此:SOLR模式或查詢中沒有任何內容。

今天,我們將Ec2實例更改爲m1.large(7.5G),將SOLR JVM設置更改爲-Xms = 2048/-Mmx = 3072。這有點幫助,他們跑了3個4小時,但最終他們也崩潰了。

哦,數據集(行數,文檔,實體等)沒有明顯變化。有一個不斷增長,但是當我將JVM內存增加了三倍時,它仍然沒有意義,它仍然崩潰...

問題:你有什麼方向可以指向我嗎?

+0

除了更改代碼外,您是否更改了其他任何內容:例如,將Solr從版本x更新爲y,更新Solrs運行的tomcat,更新下面的JVM? – cheffe

+0

第二個想法是,增量更新需要多長時間才能完成?大概接近或超過30秒? – cheffe

回答

0

衡量,而不是猜測。而不是猜測,發生了什麼變化,這可能會導致你的問題,你最好採用一些內存泄漏檢測工具,例如​​。用附帶的工具運行你的Solr,看看它會告訴你內存泄漏的確切原因。

0

看看你的Solr緩存設置。減小文檔緩存的大小幫助我們穩定了Solr 3.6服務器,該服務器也出現OutOfMemory錯誤。查詢結果緩存大小也可能與您的情況相關,它不在我的範圍內。

您可以看到管理頁面上Solr的高速緩存使用的核心:

http://localhost:8983/solr/core0/admin/stats.jsp#cache 

documentCache

https://wiki.apache.org/solr/SolrCaching#documentCache

(與你的Solr核心的名稱替換CORE0)

queryResultCache

https://wiki.apache.org/solr/SolrCaching#queryResultCache