我正在运行带有9个副本和1个分片的Solr 7.6。
当我们运行完全索引时,很少有节点进入恢复模式并永远停留在恢复状态。
我们总共有9万个父文档,每个父文档有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个节点进入恢复状态。
我有几个问题:
我们在几个Solr项目中遇到了类似的问题,这些项目在提交大量更新的同时运行了几个线程。我们能够通过停止SolrCloud中的所有Solr实例,然后使用一个线程重新启动更新来解决该问题。由于某些原因,如果有多个并发进程同时提交更新,Solr有时无法与领导者保持其追随者副本的最新状态。