2014-10-20 25 views
0

我有一個標準的mongoDB副本集3個成員(在EC2中) 一切工作正常,但不時主要有一個CPU> 100.在我看來這個實例是不健康的所以副本集應該選擇另一個主要的。但是不會發生。mongo replicaSet的成員仍然健康+100 CPU

我想蒙哥考慮不健康只有當不能通過網絡訪問,因爲如果我關閉實例,選舉工作正常。

隨着Cloudwatch我可以設置一個事件(停止/重新啓動實例),當CPU報警觸發,但我認爲這是一個解決方案更多的解決方法。

那麼,當mongodb認爲會員不健康?

回答

1

這有點複雜,但一般來說,副本集的成員在停止響應replica set heartbeats時將被視爲不健康。這些信息每2秒發送一次,預計在10秒內響應(reference)。

心跳有意輕量化,不需要大量資源來制定答覆,因此即使是繁忙的系統也可以保持健康狀態。

要退後一秒,超過100的CPU不一定是不健康的,特別是在現代多核系統上。一般來說,衡量數據庫實例的健康狀況是一個更好的主意,不管您是否看到緩慢的查詢或其他類型的性能下降。通過一切手段來追蹤CPU中尖峯的來源並試圖解決/減輕它們,但通常CPU利用率不會是數據庫性能的一個很好的晴雨表(除非所有核心都處於100%,並且數據庫最終結束餓死CPU)。

最後,沒有必要關閉一個MongoDB實例或使其否則不健康的有一個新的主選舉產生,而不是簡單地在主發出rs.stepDown()命令 - 它會將自身標記沒有資格選舉和新主被選中。