【发布时间】:2013-12-01 22:02:00
【问题描述】:
我正在尝试将整个 Solr 实例加载到内存中,我有 6000 万条记录和 10 个字段,(索引了 6 个字段,其中 icnlude DateTime、c_Text 和 string)。我在磁盘上的总 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 的内存使用量。
我将 Solr 4.4 与 Tomcat 7.0.42 一起使用
【问题讨论】:
-
你应该减少缓存的大小和Tomcat的最大内存。让操作系统负责缓存索引文件。最初,Solr 每次搜索都需要访问磁盘,但随着时间的推移,整个索引将被操作系统缓存(假设您有足够的空闲 RAM)。