繁体   English   中英

Delta导入导致Solr响应加倍甚至更差

[英]Delta Import Causing Solr Response To Double OR Even Worse

单人版6.0.0

增量导入时出现尖峰-每2小时

每隔2小时就会出现一次峰值。 即每当增量导入运行时

  1. 响应时间加倍
  2. 平均CPU负载翻倍,如果达到接近小时,则甚至达到10倍。

我的缓存设置是

 1. <filterCache class="solr.FastLRUCache"
                 size="5000"
                 initialSize="512"
                 autowarmCount="128"/>

    <queryResultCache class="solr.FastLRUCache"
                     size="10000"
                     initialSize="512"
                     autowarmCount="128"/>

     <documentCache class="solr.FastLRUCache"
                   size="100000"
                   initialSize="10000"
                   autowarmCount="0"/>

      <cache name="perSegFilter"
      class="solr.search.LRUCache"
      size="10"
      initialSize="0"
      autowarmCount="10"
      regenerator="solr.NoOpRegenerator" />

    <enableLazyFieldLoading>true</enableLazyFieldLoading>

    <queryResultWindowSize>20</queryResultWindowSize>
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
    <useColdSearcher>false</useColdSearcher>

我的大多数查询都以CPU为中心,因为它们涉及许多IN查询和NOT IN查询。 也有如果得分得分。 假设我的查询将继续是cpu cnetric。

救命

我做错了什么,因为我的增量导入导致了如此高的响应。

  • 索引大小:2GB
  • 服务器:4
  • 服务:每小时10万

另外,由于solr(上次登录)字段之一频繁更改,因此增量更新会导致200万条记录更新(百万次更新)。

我的增量进口包括三部分

a)删除-大约100

b)插入-大约30k

c)更新-约1.9k(一两列)

对于插入和更新,我正在使用 / update?&overwrite = true&wt = json进行更新

对于已删除的 stream.body = id:1 stream.body = id:1 ....然后更新

最后使用 / update?commit = true&wt = json

是否有任何优化的方法(DIH更好,但就性能而言未优化)

您具有非常大的缓存和较大的自动热设置。 因此,当您的导入命中提交时,必须重新打开索引读取器并重建缓存。 并通过useColdSearcher = false ,在预热所有这些缓存时,您将获得响应延迟。

您可以尝试更改该设置,这会使查询变慢,但在预热期间不会阻塞。

您还可以尝试使用软提交与硬提交设置,但是请记住,软提交将使内容在运行时可见,因此,如果先删除记录,然后在重新索引的过程中触发软提交,则可能会看到部分结果。 与部分更新无关紧要。

正如MatsLindh所说,另一种选择是离线进行完整索引,然后使用别名或核心交换机制来切换核心。 您甚至可以始终使索引核心处于脱机状态,甚至可以对其进行索引,甚至可以进行优化,然后将生成的索引复制到生产环境中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM