mongo replicaSet的成员仍然健康+100 CPU

时间:2014-10-20 15:30:20

标签: mongodb amazon-ec2 replicaset

我有一个标准的mongoDB replicaSet,有3个成员(在EC2中) 一切正常,但主要有一个CPU> 100.在我看来,这个实例是不健康的,因此副本集应该选择另一个主要版本。但是不会发生。

我认为mongo只有在无法通过网络访问时才会考虑不健康,因为如果我关闭了实例,那么选举就可以了。

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

那么,当mongodb认为一个成员不认真?

1 个答案:

答案 0 :(得分:1)

这有点复杂,但是当它停止响应replica set heartbeats时,通常会将副本集的成员视为不健康。它们每2秒发送一次,预计在10秒内响应(reference)。

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

要退一步,超过100的CPU不一定是不健康的,特别是在现代多核系统上。通常,最好通过是否看到慢查询或其他类型的性能下降来测量数据库实例的运行状况。通过所有方法跟踪CPU中的尖峰源并尝试解决/缓解它们,但通常CPU利用率不会成为数据库性能的一个很好的晴雨表(除非当然所有核心都是100%并且数据库最终结束渴望CPU)。

最后,没有必要关闭一个MongoDB实例,或者让新的主要选举产生其他方面不健康,而只需在主要版本上发出rs.stepDown()命令 - 它将标记自己没有资格参加选举和将选择新的小学。