ruby-on-rails - 我可以设置 Mongoid 查询超时吗? Mongoid 不会终止长时间查询

标签 ruby-on-rails mongoid mongodb-query

Mongoid 没有超时选项。
http://mongoid.org/en/mongoid/docs/installation.html

我希望 Mongoid 终止长时间查询。 如何设置 Mongoid 查询超时?

如果我什么都不做,Mongoid 会像下面这样等待很长时间。

mongo > db.currentOp()

{
    "opid" : 34973,
    "active" : true,
    "secs_running" : 1317, // <- too long!
    "op" : "query",
    "ns" : "db_name.collection_name",
    "query" : {
    "$msg" : "query not recording (too large)"
  },
    "client" : "123.456.789.123:46529",
    "desc" : "conn42",
    "threadId" : "0x7ff5fb95c700",
    "connectionId" : 42,
    "locks" : {
    "^db_name" : "R"
  },
    "waitingForLock" : true,
    "numYields" : 431282,
    "lockStats" : {
    "timeLockedMicros" : {
     "r" : NumberLong(514304267),
     "w" : NumberLong(0)
  },
    "timeAcquiringMicros" : {
     "r" : NumberLong(1315865170),
     "w" : NumberLong(0)
    }
  }
 }

最佳答案

实际上,所有查询都默认有超时时间。您可以设置一个 no_timeout 选项来告诉查询永远不会超时。看看 here

您可以像这样使用初始化器配置超时时间

Mongoid.configure do |config|
  config.master = Mongo::Connection.new(
    "localhost", 27017, :op_timeout => 3, :connect_timeout => 3
  ).db("mongoid_database")
end

关于ruby-on-rails - 我可以设置 Mongoid 查询超时吗? Mongoid 不会终止长时间查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17962254/

相关文章:

mysql - 将复杂的 SQL 查询转换为 Rails ActiveRecord 表达式

ruby-on-rails-3 - 或者查询匹配 nil 或 ""与 Mongoid 仍然匹配 ""?

ruby-on-rails - Mongoid::Paranoia 删除关联

java - Morphia中无需嵌入类直接加载嵌入类

MongoDB (3.0) 聚合 : Several matches vs One match with multiple items

html - 引号内的 ruby​​ 代码

ruby-on-rails - 带 erb 的 Sass 无法编译

jquery - Rails jquery级联下拉菜单重新加载

ruby-on-rails - 为什么 elem_match 返回 0 个元素?

javascript - 在 node.js 应用程序中根据 Mongo ID 查询 MongoDB