我的任務是處理Solr安裝中的OutOfMemoryError問題。我終於設法通過使用AggressiveHeap JVM選項來保持它超過幾分鐘。啓動過程中的Solr內存消耗 - 加載索引?
我從來沒有與Solr合作過,所以我感覺我的方式有點。
這是我們採取措施的過程:
- 啓動Tomcat
- 揭開序幕增量導入
的增量導入啓動後,堆消耗不可避免地上升。我們嘗試將Xmx設置爲4 Gig,這會導致OutOfMemoryErrors或系統無響應,因此嘗試了AggressiveHeap選項,這導致JVM佔用大約5.5 Gig的RAM。正如你在屏幕上看到的那樣,這次GC能夠釋放內存,內存消耗變得不那麼快,然後在圖像的右側有另一個實際上工作的GC,並且它繼續像這樣。
什麼是內存的初始分配?它是索引被加載到RAM中嗎?有沒有辦法減少這種情況?
我已經嘗試調整ramBufferSizeMB,maxBufferedDocs,mergeFactor並且還取消了StandardIndexReaderFactory的聲明讓我設置termIndexDivisor爲12,但很難看出這些更改是否有所作爲(是的:需要更多分析)。
該索引已創建了多個失敗的索引會話 - termIndexDivisor參數的添加更新 - 索引文件已存在的事實是否阻止此參數發揮作用?
(本機是物理的,具有RAM和16個內核的12場演唱會,這是另一個大Tomcat實例共享的機器。我們正在運行的Oracle JDK 1.6 21)