在次要或主要时间出现时,Mongoid故障转移

时间:2016-05-26 20:36:05

标签: ruby-on-rails ruby mongodb mongoid

我们有一个mongodb副本设置,有两个成员和一个仲裁者:

  • db1 - 主要
  • db2 - 次要
  • 仲裁器

昨天db2陷入奇怪状态几个小时。在此期间,Mongoid不断尝试连接到小学。然而,主要没有回应,它超时。

问题是超时需要5秒,因此应用程序被该请求阻止每10秒中有5秒,因此无法进行数据库写入/读取。这使数据库速度降低到无法正常工作的程度。

我们正在使用Mongoid 4,并且正在尝试确定在服务器发生故障时我们可以做些什么来获得合适的故障转移响应。

我们的mongoid.yml是如下:

  options:
    write: {w: 1}
    read: :primary_preferred
    pool_size: 32
    pool_timeout: 5

我假设它可以检查返回集合的服务器,而不会阻止其他数据库值。

关于这种情况发生的原因或原因的任何想法,或改善行为的方法?

1 个答案:

答案 0 :(得分:0)

我们发现的最佳解决方案是升级到Mongoid5。 Mongoid 5提供了更多的故障转移选项。