【问题标题】:Member of mongo replicaSet still healthy with +100 CPUmongo replicaSet 的成员在 +100 CPU 时仍然健康
【发布时间】:2014-12-15 15:45:22
【问题描述】:

我有一个标准的 mongoDB 副本集,有 3 个成员(在 EC2 中) 一切正常,但有时主节点的 CPU > 100。在我看来,这个实例不健康,所以副本集应该选择另一个主节点。但这并没有发生。

我想 mongo 仅在无法通过网络访问时才考虑不健康,因为如果我关闭实例,选举工作正常。

使用 Cloudwatch,我可以在触发 CPU 警报时设置一个事件(停止/重启实例),但我认为这更像是一种解决方法而不是解决方案。

那么,当 mongodb 认为某个成员不健康时?

【问题讨论】:

    标签: mongodb amazon-ec2 replicaset


    【解决方案1】:

    这有点复杂,但通常副本集的成员在停止响应replica set heartbeats 时会被认为是不健康的。这些信息每 2 秒发送一次,预计会在 10 秒内得到响应 (reference)。

    心跳是故意轻量级的,不需要大量资源来制定回复,因此即使是繁忙的系统也可以保持健康状态。

    退一步说,超过 100 的 CPU 不一定不健康,尤其是在现代多核系统上。通常,通过您是否看到缓慢的查询或其他类型的性能下降来衡量数据库实例的健康状况是一个更好的主意。尽一切办法追踪 CPU 峰值的来源并尝试解决/减轻它们,但通常 CPU 利用率不会成为数据库性能的一个很好的晴雨表(当然,除非所有内核都处于 100% 并且数据库结束急需 CPU)。

    最后,没有必要关闭 MongoDB 实例或使其不健康地选出一个新的主节点,而只需在主节点上发出 rs.stepDown() 命令 - 它会标记自己不符合选举资格和新的主节点将被选中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2023-01-08
      • 2022-01-06
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多