我的任务是处理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)