mongodb的分片chunk移动速度非常缓慢,每个chunk的大小是64M移动一个chunk的时间大概需要7分钟左右,还有部分collection全集中在一个shard上面完全不移动,有没大神给点指导意见。
zale 已回答的问题
chunk迁移对性能影响比较明显,降低影响的做法:
- 提升磁盘 IO 能力,尽可能使用 SSD 同等级磁盘。
- 在业务低峰时进行 chunk 迁移。
- 提前规划分片(initChunks),仅适用于 Hash分片
对于单个 moveChunk 命令,检查 <span class="pre">_secondaryThrottle</span>
设置为 false 可以提升一些速度。3.4版本默认是 false。
另外一个问题是部分集合集中在一个 shard 上,分不同情况:
- 分片做的太晚,导致集合体积太大无法分片,具体阈值参考官网
- 分片键不合理,基数太小导致存在 jumbo chunk
- 写入压力过大导致多次 split 失败,最终 chunk 上的文档数大于 1.3*avgObjectSize 时,会无法迁移,在一些老版本中,如果 chunk 上超过了 250000 个也会导致无法迁移。可参考
https://jira.mongodb.org/browse/SERVER-19919
zale 已回答的问题