我试图将1个特定字段的重数据集索引真的太重(使用DIH)......
然而,当我开始时,我得到内存警告和回滚(OutOfMemoryError)。所以,我已经了解到我们可以在java命令中使用-Xmx1024m
选项来启动solr并为堆分配更多内存。
我的问题是,既然这也可能在以后变得不够,那么问题与缓存有关吗?
这是我在solrconfig中的缓存块:
<filterCache class="solr.FastLRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<queryResultCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<documentCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
我想也许我需要为“documentClass”转换缓存。谁有更好的主意?或许这里还有另一个问题?
只是为了让你知道,直到我添加了非常重的数据库字段进行索引,一切都很好......
答案 0 :(得分:1)
可能是因为缓存,当然。没有更多信息很难说。
但是,我会说,不,您不应该关闭文档缓存,请参阅documentCache上的文档。
documentCache的大小应始终大于
<max_results>
*<max_concurrent_queries>
,以确保Solr在请求期间不需要重新获取文档。
如果需要,您可以稍微调整缓存设置。回头参考上面的文档,您可以了解延迟加载文档的建议。
更好的方法可能是:您无法在索引中存储大量数据集。一种非常典型的模式是索引大型数据集,但将它们完全存储在索引外部,并从您真正需要的任何外部数据源中获取它们。
1GB内存也可能不足以支持你想用扩展数据集对你的SOLR实例做什么。