文档菜单
文档首页
/
MongoDB 手册
/ / /

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

本页内容

  • 概述
  • 步骤

在具有主-次要仲裁器(PSA)架构的三成员副本集或具有三成员PSA分片的三成员分片集群中,下线或延迟的数据节点可能导致性能问题。

如果一个数据节点下线,另一个节点将成为主节点。带有w:1 的写入在此状态下继续成功,但带有写入关注点的 "majority" 无法成功,并且提交点开始滞后。如果您的PSA副本集包含一个延迟的次要节点,并且您的副本集需要两个节点来多数提交更改,则您的提交点也会延迟。

延迟的提交点会影响集群性能的两个方面

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

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

为了减少缓存压力和增加写流量,为不可用或延迟的节点设置 votes: 0priority: 0。对于使用“多数”发出的写操作,只有投票成员被考虑来确定执行多数提交所需的节点数量。将节点的配置设置为 votes: 0 可以将需要提交写操作时写入关注 "majority" 的节点数从两个减少到一,并允许这些写操作成功。

一旦副本追上了,可以使用 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

本页内容