首页 > 解决方案 > Solr 节点在完全索引后挂在恢复状态 - solr 写入限制

问题描述

我正在运行具有九个副本和一个分片的 Solr 7.6。

当我们运行完整索引时,很少有节点进入恢复模式并永远停留在恢复状态。

我们总共有 90k 个父文档,每个父文档有 300 个子文档。

parent doc size: 15kB
child doc size: 500B
total time of full indexing: 36-39 mins
batch size: max 1000(parent docs which include 300 children each) = 1000*300
The number of threads used for full indexing: 10
Average total docs indexed/second: 2400 Parent docs * 300 children

提交设置:

autosoftcommit maxtime: 30s
autocommit maxtime: 1min
numRecordsToKeep: 100

十个线程中的每一个都从 Cassandra 获取数据并创建用于索引的文档,一旦线程在其缓冲区列表中准备好索引的 1000 个父文档(包含 300 个子文档),它就会使用更新 API 将数据推送到 Solr。

使用上述设置,当我运行完整的索引作业时,2-3 个节点会进入恢复状态。

我有几个问题:

  1. 对于单个分片 solr 集群,我每秒可以索引多少条记录,以及我的文档大小?
  2. 我需要减少线程数吗?或批量大小?

标签: solrsolrcloudthrottling

解决方案


我们的几个 Solr 项目遇到了类似的问题,这些项目提交了批量更新,同时运行了几个线程。我们能够通过停止 SolrCloud 中的所有 Solr 实例并使用一个线程重新启动更新来解决这个问题。出于某种原因,如果多个同时进程提交更新,Solr 有时会无法使其跟随者副本与领导者保持同步。


推荐阅读