我有一個應用程序創建一個相當大的Solr 3.6索引,約。 300GB的1B文件,每天分成10個核心。索引編制效果很好,我使用循環算法在覈心之間均勻分配文檔。搜索對我來說也很好,直到返回結果集大於100K +文檔。Solr - Java內存不足
在這一點上,我得到一個Java錯誤返回:要麼OutOfMemoryError異常或SolrException:解析錯誤
我的搜索是簡單的,不使用通配符或排序或分面搜索,但似乎緩衝整個結果之前設置返回它。我的服務器上的物理內存是256G,我正在運行Solaris 10.我使用默認的32位Java,但也嘗試過32位和64位的Java 7。
當我使用64位Java時,我能夠增加最大內存以使用-Xmx選項返回1M +文檔,但它實際上只需要一個Solr進程的所有內存。
除了用數百個微小的索引重新設計我的應用程序,沒有人有任何建議如何從沒有大量內存的Solr獲得大型搜索結果集?
你的文件有多大?你在索引什麼,你在儲存什麼? 「分爲10個核心」是什麼意思? –
隨着32位jvm,你將被限制在大約3g的堆,所以如果這確實需要更多的東西,你絕對會需要64位,但這似乎是不言而喻的基礎上,你的能力讓事情運行,儘管幾乎將你的整臺機器的RAM放棄了。看到這個問題的一些建議,如何挖掘做內存分配分析:http://stackoverflow.com/questions/1839599/analyze-gc-logs-for-sun-hotspots-jvm-6/1841109#1841109 – gview
我認爲這對於32位JVM是2GB的限制:http://stackoverflow.com/questions/2457514/understanding-max-jvm-heap-size-32bit-vs-64bit – duffymo