Ruby on rails Mongodb服务器宕机,如何防止Rails应用程序超时?

Ruby on rails Mongodb服务器宕机,如何防止Rails应用程序超时?,ruby-on-rails,ruby,mongodb,Ruby On Rails,Ruby,Mongodb,我在mongodb中使用Rails应用程序存储日志。当mongo服务器最近宕机时,我们的应用程序开始在mongo插件上超时。如果mongo服务器宕机,如何防止Rails超时?您可以使用-因此,如果主服务器宕机,它可以自动故障切换到其中一个副本 您可以使用-因此,如果主服务器出现故障,它可以自动故障切换到其中一个副本 通常数据库插入应该很快,因此可以使用ruby超时: require 'timeout' Timeout::timeout(0.2) do ... write to log ser

我在mongodb中使用Rails应用程序存储日志。当mongo服务器最近宕机时,我们的应用程序开始在mongo插件上超时。如果mongo服务器宕机,如何防止Rails超时?

您可以使用-因此,如果主服务器宕机,它可以自动故障切换到其中一个副本

您可以使用-因此,如果主服务器出现故障,它可以自动故障切换到其中一个副本

通常数据库插入应该很快,因此可以使用ruby超时:

require 'timeout'
Timeout::timeout(0.2) do
  ... write to log server
end

在任何情况下,此代码都将超时并在200毫秒后继续执行。

通常,数据库插入应该是快速的,因此您可以使用ruby超时:

require 'timeout'
Timeout::timeout(0.2) do
  ... write to log server
end
此代码在任何情况下都将超时并在200毫秒后继续。

支持这样的超时

@conn = Connection.new("localhost", 27017, :pool_size => 5, :timeout => 5)
但是中央计算机没有使用它。因此,您可以通过分叉将其添加到其中,也可以通过monkey path调用CentralLogger::MongoLogger.connect方法

您需要在Mongo::Connection.new中输入:timeout=>5(或任何值)

我敢打赌,central logger的作者希望将其放在那里,因此可能欢迎fork and pull请求。

支持这样的超时

@conn = Connection.new("localhost", 27017, :pool_size => 5, :timeout => 5)
但是中央计算机没有使用它。因此,您可以通过分叉将其添加到其中,也可以通过monkey path调用CentralLogger::MongoLogger.connect方法

您需要在Mongo::Connection.new中输入:timeout=>5(或任何值)


我敢打赌,central logger的作者希望将其放在那里,因此可能欢迎使用fork-and-pull请求。

我在ruby驱动程序自述中看到了这一点,但不确定如何使用它。自述文件说“如果使用Rack::Timeout等工具实现更高级别的超时,那么调用Mongo::Connection#close以防止后续操作接收到之前的请求非常重要。”我使用的是Rack::Timeout,那么我应该如何调用Mongo::Connection#close?我已经有了一个central_logger分支,使其与Heroku日志兼容。我将把这个添加到那个fork中。@Reed G.Law:我想@mongo_connection.close(或类似的东西)我在ruby驱动程序自述中看到了,但不确定如何使用它。自述文件说“如果使用Rack::Timeout等工具实现更高级别的超时,那么调用Mongo::Connection#close以防止后续操作接收到之前的请求非常重要。”我使用的是Rack::Timeout,那么我应该如何调用Mongo::Connection#close?我已经有了一个central_logger分支,使其与Heroku日志兼容。我会把这个加到叉子上。@Reed G.Law:我想@mongo_connection.close(或类似的东西)