Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

使用自我管理的 PSA 副本集缓解性能问题

在此页面上

  • Overview
  • 步骤

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

如果一个承载数据的节点出现故障,则另一个节点将成主节点 (primary node in the replica set)节点。 在此状态下,具有 w:1的写入继续成功,但具有写关注(write concern)"majority"的写入无法成功,并且提交点开始滞后。 如果您的 PSA副本集包含从节点(secondary node from replica set)的从节点,并且您的副本集需要两个节点才能多数提交更改,则您的提交点也会滞后。

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

  • 存储引擎会将提交点之后发生的所有更改保留在磁盘上,以保留持久性历史记录。随着时间的推移,这些写入操作产生的额外 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() 方法。

后退

Modify PSA

在此页面上