Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solrcloud副本在更新后立即进入恢复模式_Solr_Indexing_Lucene_Recovery_Solrcloud - Fatal编程技术网

Solrcloud副本在更新后立即进入恢复模式

Solrcloud副本在更新后立即进入恢复模式,solr,indexing,lucene,recovery,solrcloud,Solr,Indexing,Lucene,Recovery,Solrcloud,在我们的压力环境中,我们有一个solr云服务器集群,每个服务器上有10个碎片和4个副本。在我们的prod环境中,每个分片中将有10个分片和15个副本。我们当前的提交设置如下 *<autoSoftCommit> <maxDocs>500000</maxDocs> <maxTime>180000</maxTime> </autoSoftCommit> <autoCom

在我们的压力环境中,我们有一个solr云服务器集群,每个服务器上有10个碎片和4个副本。在我们的prod环境中,每个分片中将有10个分片和15个副本。我们当前的提交设置如下

    *<autoSoftCommit>
        <maxDocs>500000</maxDocs>
        <maxTime>180000</maxTime>
    </autoSoftCommit>
    <autoCommit>
        <maxDocs>2000000</maxDocs>
        <maxTime>180000</maxTime>
        <openSearcher>false</openSearcher>
    </autoCommit>*
*
500000
180000
2000000
180000
假的
*
我们索引了大约9000万份文档。我们有两种不同的方法来索引文档 a) 完整索引。索引9000万份文档需要4个小时,而文档进入搜索者的速度约为每秒6000份 b) 增量索引。索引增量更改需要一个小时。大约有300万次更改,搜索者每秒收到2500份文档

我们有两个集合search1和search2。当我们进行完整索引时,我们在search2集合中进行索引,而search1则为实时流量提供服务。完成后,我们使用别名交换集合,以便search2集合提供实时流量,而search1可用于下一次完整索引运行。 当我们进行增量索引时,我们会在为实时流量提供服务的search1集合中进行


我们所有的搜索引擎都有12GB的内存可用,并且有四核Intel(R)Xeon(R)CPU X5570@2.93GHz 我们在触发索引时发现了以下问题。 在14台并行主机上触发索引后大约10分钟内,复制副本进入恢复模式。所有碎片都会发生这种情况。大约20分钟后,越来越多的副本开始进入恢复模式。大约半小时后,除leader外的所有副本都处于恢复模式。我们不能限制索引负载,因为这将增加我们的总体索引时间。因此,为了克服这个问题,我们在触发索引之前删除所有副本,然后在索引完成后将它们添加回

在执行增量索引时,我们观察到复制副本进入恢复的相同行为。我们无法在增量索引期间删除复制副本,因为它也在为实时流量服务。我们试图限制索引速度,但集群仍在恢复中

如果我们让集群保持原样,当索引完成时,它最终会在一段时间后恢复。我们的测试表明,由于它为实时流量提供服务,我们不能让这些副本进入恢复模式,因为这也会降低搜索性能

我们尝试了不同的提交设置,如下所示

a) 无自动软提交、无自动硬提交和已触发的提交 在索引结束时 b) 无自动软提交,是自动硬提交 提交和索引末尾的提交
c) 是自动软提交,无自动硬提交
d) 是自动软提交,是自动硬提交
e) 上述提交的不同频率设置

不幸的是,所有这些都产生了相同的行为。复制品仍在恢复中 我们已将zookeeper超时时间从30秒增加到5分钟,问题仍然存在。
是否有任何设置可以解决此问题?

垃圾收集暂停可能会超过clientTimeout,导致Zookeeper连接中断,从而导致无限周期的恢复

频繁的优化、提交或更新以及调整不当的段合并配置可能会导致恢复时的开销过大。此开销可能导致恢复循环

最后,我们的组织在恢复过程中似乎遇到了某种类型的bug。这种情况很少见,但似乎发生在网络连接频繁或不可靠的时候。Zookeeper断开连接会触发恢复,恢复会占用内存,有时甚至会导致内存不足

更新注意图形查询


我在Solr中的图形查询中遇到的有经验的暂停。图形查询是类型先行插件/组件的一部分。当有人提交长字符串以提前输入时,图形查询变得复杂,并导致巨大的内存使用和gc暂停。

我们所有的搜索程序都有12 GB的可用RAM,并且有四核Intel(R)Xeon(R)CPU X5570@2.93GHz。其中只有一个java进程在运行,即jboss和solr。所有12GB都可用作java进程的堆。我们观察到java进程的堆内存平均约为8-10GB。所有搜索者的最终索引大小为9GB。因此,总共有9X10(碎片)=90GB的索引文件。请注意,我们尝试了15分钟软提交设置和30分钟硬提交设置。两种设置的时间相同,30分钟软提交和一小时硬提交设置。很抱歉,我发布了错误的信息。我错误地发布了我们的DEV env配置。在仔细检查了我们的stress和Prod Beta env(我们发现了原始问题)之后,我发现所有搜索者都有大约50 GB的可用RAM和两个运行JVM的实例(两个不同的端口)。两个实例都分配了12GB。其余26 GB可用于操作系统。主机上的第一个实例具有search1集合(实时集合),同一主机上的第二个实例具有search2集合(用于完整索引)。您是否有幸解决此@vijay问题?我们的solrcloud群集也出现了类似的问题,除了每次优化集合时副本都会进入恢复状态。@VijaySekhri您能解决这个问题吗?我们这边也面临着类似的问题。