磁盘io导致的mongo副本集延迟

故障上报

  • 2023.09.10,开发同事反馈 mongodb(阿里云ecs上部署的副本集)的延迟特别大,登录主节点(10.30.0.177:27017),确认 10.30.0.25:27017 这个从库节点的延迟高达 1174秒
[root@localhost ~]# mongo 10.30.0.177:27017
set27017:PRIMARY> rs.printSecondaryReplicationInfo();
source: 10.30.0.176:27017
        syncedTo: Tue Sep 10 2023 10:08:26 GMT+0800 (CST)
        1 secs (0 hrs) behind the primary 
source: 10.30.0.25:27017
        syncedTo: Tue Sep 10 2023 09:48:53 GMT+0800 (CST)
        1174 secs (0.33 hrs) behind the primary

分析过程

  • 第1步,查看存在延迟节点(示例10.30.0.25)的cpu、内存、磁盘io等压力,发现10.30.0.25cpu压力稍大(约75%),但实例云盘iops也并不高(写2000次/s)

  • 第2步,与不存在延迟的节点(示例10.30.0.176)进行性能监控的比对,发现10.30.0.176cpu压力不大(约25%),但实例云盘iops也并不高(写2000次/s)

  • 第3步,查看mongodb日志,没有发现超过2秒以上的慢查询
  • 第4步,比对所有从库节点的磁盘规格,发现存在延迟的节点使用的是高效云盘(iops约5000),而主节点与不存在延迟的节点均使用的是本地SSD盘(iops最高30万),本case问题就发生在这里。

以上是存在延迟的 10.30.0.25(实例规格 ecs.r6.2xlarge)只有2块高效云盘,iops仅5000

以上是不存在延迟的 10.30.0.176(实例规格 ecs.i2.4xlarge)系统盘是高效云盘,iops仅5000;而数据盘为本地盘,iops约30万

以上是ecs实例i2规格的NVMe SSD指标

解决方案

  • 更换磁盘设备:将存在延迟的mongodb从高效云盘迁移到本地SSD盘,以提高iops性能,不同磁盘的性能比对,具体参考:块存储性能
  • 阿里云有的ecs不支持挂载本地SSD盘,此时就只能更换ecs实例了,建议与主库规格保持一致,具体参考:变更云盘类型

踩过的坑

  • 若阿里云ecs挂载了多块云盘,默认监控看到的实例云盘iops只有一条曲线,并不能区分具体是哪一块盘(这也是为什么第1、2步看到的高效云盘iops都只有2000多的原因),比较坑
Copyright © www.sqlfans.cn 2024 All Right Reserved更新时间: 2024-09-11 03:08:57

results matching ""

    No results matching ""