solr - 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 个节点会进入恢复状态。
我有几个问题:
- 对于单个分片 solr 集群,我每秒可以索引多少条记录,以及我的文档大小?
- 我需要减少线程数吗?或批量大小?
解决方案
我们的几个 Solr 项目遇到了类似的问题,这些项目提交了批量更新,同时运行了几个线程。我们能够通过停止 SolrCloud 中的所有 Solr 实例并使用一个线程重新启动更新来解决这个问题。出于某种原因,如果多个同时进程提交更新,Solr 有时会无法使其跟随者副本与领导者保持同步。
推荐阅读
- matlab - Matlab 的 arrayfun 操作是否比预先分配的 for 循环更节省内存?
- python - 从 Python 中的后续意图获取 Dialogflow 上下文参数
- winapi - 为什么自定义窗口过程停止处理窗口消息?
- r - 加载 Rcmdr 包后,R/Rstudio 停止工作
- java - 使用java创建使用json作为数据参数的测试报告
- python - 使用 Python 从网页接收特定 URL(Multireddit 列表)
- json - 序列化文本块 django rest-framework 并使用 react 显示段落
- java - 如何在不使用 XML 文件的情况下为一个类创建多个从属 bean?
- javascript - 如何使用 jest、react-testing-library 在 React 中模拟元素上的点击事件
- python - 在发现所有状态之前终止递归