慢操作
从节点复制主节点的操作日志,并将操作异步应用于其数据集。通过从节点同步主节点的数据集,即使一个或多个成员失败,副本集(MongoDB 集群)也可以继续运行。
从 4.2 版本开始,副本集的从节点记录慢操作(操作时间比设置的阈值长)的日志条目。这些慢操作在 REPL
(opens new window)组件下的 诊断日志 (opens new window)中记录了日志消息,并使用了文本 op:
花费了 ms
。这些慢操作日志条目仅取决于慢操作阈值,而不取决于日志级别(在系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。
复制延迟和流控
- 复制延迟(Replication lag (opens new window))是指将主节点上的写操作复制到从节点上所花费的时间。较短的延迟时间是可以接受的,但是随着复制延迟的增加,可能会出现严重的问题:比如在主节点上的缓存压力。
- 从 MongoDB 4.2 开始,管理员可以限制主节点的写入速率,使得大多数延迟时间保持在可配置的最大值
flowControlTargetLagSeconds
(opens new window)以下。 - 默认情况下,流控是开启的。
- 启用流控后,随着延迟时间越来越接近
flowControlTargetLagSeconds
(opens new window),主对象上的写操作必须先获得令牌,然后才能进行锁定并执行写操作。通过限制每秒发出的令牌数量,流控机制尝试将延迟保持在目标以下。