在业务架构层面,要避免磁盘 IO 成为瓶颈,需要怎么做?
控制并发写入/读取线程数 MongoDB 是多线程应用,但是我们并不推荐"极致压榨"MongoDB 实例本身的 性能,过高的并发写入速度和复杂查询并发数,容易引起 IOPS 瓶颈,甚至导 致 Secondary 节点持续延迟。具体的 MongoDB IO 压力可以参考上文提到的 mongostat 中的 dirty 数值。 如果业务写入量就是大到超出单机瓶颈,建议升级至 MongoDB 分片集群模式, 通过数据的水平拆分来线性扩容 MongoDB 的写入性能。
尽可能避免峰值写入 部分业务,比如日志系统的定期写入或者游戏系统中用户信息的批量持久化, 容易造成一个一个 IOPS 峰值。针对这种情况,在当前的实例配置不足以支撑 如此峰值写入的情况下,我们建议业务侧改造为平滑写入,比如给每一个批量 写入操作添加一个随机时间片。
3 . 避免业务高峰期间做运维操作 一些对性能影响较大的运维操作本质上也是认为造成了 IOPS 峰值,在无法避 免的情况下,应该尽可能避免在业务高峰期执行。常见的容易引起 IO 高峰的 运维操作有批量写入/更新/删除数据,添加 Index,对集合执行 Compact 操作, 批量导出数据等。
资源来源于《阿里云数据库运维实战问题改》
https://developer.aliyun.com/topic/download?spm=a2c6h.20345107.J_6399686890.1.2e1e17dbzKUX5r&id=8198
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。