【问题标题】:Indexing Heavy dataset in Solr在 Solr 中索引重型数据集
【发布时间】:2013-06-06 00:28:37
【问题描述】:

我正在尝试索引一个包含 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”的缓存。有人有更好的主意吗?或者这里可能还有其他问题?

只是让你知道,直到我添加了用于索引的非常重的 db 字段,一切都很好......

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

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

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

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

    如果有必要,您或许可以将您的缓存设置回缩一些。参考上面的文档,您可以接受有关延迟加载文档的建议。

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

    也有可能 1GB 的内存根本不足以支持您希望通过扩展数据集对 SOLR 实例执行的操作。

    【讨论】:

    • 嗯。我决定只“索引”大型数据集并将数据存储在其当前位置...
    • 对了,你在solrconfig中的"max_results"和"max_concurrent_queries"是在哪里设置的?
    猜你喜欢
    • 2015-12-23
    • 2015-10-20
    • 2014-07-07
    • 2012-09-25
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多