[英]Delta Import Causing Solr Response To Double OR Even Worse
单人版6.0.0
每隔2小时就会出现一次峰值。 即每当增量导入运行时
我的缓存设置是
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。
救命
我做错了什么,因为我的增量导入导致了如此高的响应。
另外,由于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.