我们使用Apache Solr (3.1.0)来索引为多个站点编写的大量文章。我们有一个主/从设置(底部的复制配置),其中服务器1对文章进行索引,服务器2复制索引。从机应该每隔60秒轮询一次主机,但实际上,我们几乎每次都可以看到10到75次连续的/replication
调用。
每个Solr核心(从配置中的${solr.core.name}
)代表一个不同的站点。我看到的最多的/replication
调用都绑定到最大的站点上。其中一个核心每分钟只有一个调用,在调用update?commit=true
几次之后,我已经能够在那里重现这个调用,所以这让我认为这与主机执行的提交量有关。
所以我的问题是,如何阻止Solr从服务器复制索引几十次,并强制它每分钟只复制一次?我尝试在主配置中使用commitReserveDuration
参数,但我真的看不出有什么不同。
主复制配置:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="replicateAfter">commit</str>
<str name="replicateAfter">startup</str>
</lst>
</requestHandler>
从复制配置:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<str name="masterUrl">http://${solr.master.server}/search/${solr.core.name}/replication</str>
<str name="pollInterval">00:00:60</str>
</lst>
</requestHandler>
发布于 2016-03-18 18:15:46
在配置中,您指定了replication after as commit,所以如果您非常频繁地从代码中发出commit,那么它将触发复制,因此我建议将其更改为优化而不是提交。这应该可以解决您的问题。Here是提供有关复制后设置的更多详细信息的链接。
https://stackoverflow.com/questions/35653520
复制相似问题