文档首页/ 文档数据库服务 DDS/ 常见问题/ 监控和告警/ WiredTiger引擎脏数据的缓存过高告警恢复手段
更新时间:2024-04-29 GMT+08:00

WiredTiger引擎脏数据的缓存过高告警恢复手段

问题出现原因

WiredTiger引擎脏数据的缓存过高,主要有以下两种场景:

  1. 将MongoDB的运行参数enableMajorityReadConcern设置为true后,业务写入速率过快,导致从节点无法及时同步主节点oplog。
  2. 将MongoDB的运行参数enableMajorityReadConcern设置为false后,因为CPU和内存规格过小,无法承受当前业务上的写入速率。

问题排查

  • 排查当前MongoDB的运行参数。登录控制台 -> 单击实例名称 -> 参数修改,可以查看当前enableMajorityReadConcern的设置值。
    图1 查看参数enableMajorityReadConcern的设置值
  • 登录控制台 -> 云服务监控,查看节点的“WiredTiger引擎脏数据缓存百分比”、“内存中脏数据缓存"的监控指标”。
    图2 查看内存中脏数据
    图3 查看WiredTiger引擎脏数据
  • 常见的伴生现象:

    主备时延增大并且持续增大,通过登录控制台 -> 云监控 -> Secondary,查看“主备时延”监控指标。

    图4 查看主备时延

解决方案

排查当前MongoDB的运行参数,登录控制台 -> 单击实例名称 -> 参数修改,可以查看当前enableMajorityReadConcern的设置值。根据情况区分:
  • enableMajorityReadConcern为false:登录控制台 -> 云监控, 查看“主备时延”、“WiredTiger引擎脏数据缓存”、“WiredTiger脏数据的缓存百分比”、“CPU”、“运行内存”这些指标。如果“WiredTiger脏数据的缓存百分比”指标超过20%且持续上涨,“CPU”、“运行内存”超过90%,请及时进行客户端写入限流,同时评估是否需要进行规格升级。
  • enableMajorityReadConcern为true。
    • 如果业务上没有强制读一致性的场景,建议联系华为工程师将参数设置为false。
    • 如果业务上有强制读一致性的场景,且“WiredTiger脏数据的缓存百分比”指标超过20%并且持续上涨,“CPU”、“运行内存”超过90%,请及时进行客户端写入限流,同时评估是否需要进行规格升级。