0

我正在尝试用 1 个特定字段真的太重(使用 DIH)索引一个沉重的数据集......

但是,当我开始时,我收到内存警告和回滚 (OutOfMemoryError)。所以,我了解到我们可以使用-Xmx1024m带有 java 命令的选项来启动 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”的缓存。有人有更好的主意吗?或者这里可能还有另一个问题?

只是让你知道,直到我添加了非常重的数据库字段进行索引,一切都很好......

4

1 回答 1

1

当然,这可能是因为缓存。没有更多信息很难说。

但是,我会说,不,您不应该关闭文档缓存,请参阅 documentCache 上的文档

documentCache 的大小应始终大于<max_results>* <max_concurrent_queries>,以确保 Solr 在请求期间不需要重新获取文档。

如有必要,您也许可以稍微缩小缓存设置。参考上面的文档,您可以接受有关延迟加载文档的建议。

更好的方法可能是:您不能在索引中存储大量数据集。一个非常典型的模式是索引大型数据集,但将它们完全存储在索引之外,并在真正需要它们时从您创建的任何外部数据源中获取它们。

也有可能 1GB 的内存根本不足以支持您想要使用扩展数据集对 SOLR 实例执行的操作。

于 2013-06-05T16:28:37.183 回答