Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

缓解 PSA 副本集的性能问题

在此页面上

  • 概述
  • 步骤

在具有主节点-从节点-仲裁节点 (PSA) 架构的三节点副本集或具有三节点 PSA 分片的分片集群中,关闭或延迟的数据承载节点可能会导致性能问题。

如果一个数据承载节点关闭,另一个节点将变为主节点。在这种状态下,具有 w:1 的写入继续成功,但具有 "majority" 写关注的写入失败,并且提交点开始出现延迟。如果 PSA 副本集包含延迟的从节点,并且副本集需要两个节点以进行多数更改提交,则提交点也会出现延迟。

对于延迟的提交点,两个因素可能会影响集群性能:

  • 存储引擎会将提交点之后发生的所有更改保留在磁盘上,以保留持久性历史记录。随着时间的推移,这些写入操作产生的额外 I/O 会增加。这会极大地影响写入性能并增加缓存压力。

  • MongoDB 允许 oplog 超过其配置的大小限制,以避免删除 majority commit point

要减轻缓存压力并增加写入流量,可以为不可用或延迟的节点设置 votes: 0 priority: 0。对于以“多数”发出的写操作,仅考虑投票节点来确定执行多数提交所需的节点数量。将节点配置设置为 votes: 0 可以减少使用写关注 "majority" 提交写操作所需的节点数(从 2 减为 1),并且允许这些写操作成功。

从节点赶上后,您可以使用rs.reconfigForPSASet()方法将votes设置回1

注意

在 MongoDB 的早期版本中,enableMajorityReadConcern--enableMajorityReadConcern 是可配置的,允许您禁用具有类似效果的默认读关注 "majority"

要在主节点-从节点-仲裁节点 (PSA) 三节点架构的部署中减少缓存压力和增加的写入流量,可以为不可用或延迟的从节点设置 { votes: 0, priority: 0 }

cfg = rs.conf();
cfg["members"][<array_index>]["votes"] = 0;
cfg["members"][<array_index>]["priority"] = 0;
rs.reconfig(cfg);

如果您想稍后更改从节点的配置,请使用 rs.reconfigForPSASet() 方法。

← 安全地修改 PSA 副本集

在此页面上