将整个Solr实例加载到内存中

时间:2013-11-18 16:47:07

标签: windows tomcat solr

我正在尝试在内存中加载整个Solr实例,我有6千万条记录,包含10个字段,(6个字段已编入索引,其中包含DateTimec_Textstring。我在磁盘上的总solr实例大小为15 GB,我已将JVM内存设置为:

Initial Memory Pool: 2048  (2 GB)
Maximum Memory Pool: 20480 (20 GB)

我将solrconfig.xml中的缓存配置更改为:

<documentCache class="solr.LRUCache"
               size="6000000"
               initialSize="2000000"
               autowarmCount="0"/>

但是对于每次搜索它仍然从磁盘读取(通过Windows上的PerfMon实用程序检查)。同样在任务管理器中,它显示tomcat占用500 MB的RAM。我已经看到了这个问题:Solr loads entire index into memory但它没有接受的答案,我也尝试根据该问题增加缓存大小,但它仍然没有增加tomcat的内存使用量。 / p>

我正在使用Solr 4.4和Tomcat 7.0.42

1 个答案:

答案 0 :(得分:2)

您可以使用RAMDirectory将整个索引构建到RAM中。

这可以在你的solrconfig.xml

中完成
<config>

    <!-- ... -->

    <directoryFactory name="DirectoryFactory" 
        class="org.apache.solr.core.RAMDirectoryFactory"/> 

    <!-- ... -->

</config>

然而,随着一切都在现场,这有利有弊。可以在SO问题Need to know pros and cons of using RAMDirectory中阅读详细的阐述。

然后,您应该考虑减少缓存的大小。