【问题标题】:Can I set Mongoid query timeout? Mongoid don't kill long time query我可以设置 Mongoid 查询超时吗? Mongoid 不会杀死长时间的查询
【发布时间】:2013-07-31 05:26:38
【问题描述】:

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)
    }
  }
 }

【问题讨论】:

    标签: ruby-on-rails mongoid mongodb-query


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想在config/mongoid.yml中设置op_timeout和connect_timeout。我已经这样做了。但我无法确认参数是否有效。我在哪里可以确认参数有效? CollectionName.all.options 是空哈希。
    • @TerukiShinohara 它确实有效并且有效 - groups.google.com/forum/#!topic/mongoid/UhRfszA_bd4
    【解决方案2】:

    对于 Mongoids,默认查询超时通常为 60 秒,但由于 Rubys 线程,在正确关闭进程时往往会出现问题。

    希望您的任何请求都不会对 Mongrel 造成压力,但如果您继续遇到此问题,我会考虑对您的应用程序进行一些优化更改,或者可能考虑采用 God 或 Monit。如果你不喜欢这个并且想改变你的请求处理,如果你已经在 nginx 上,我可能会推荐 Unicorn(github 已经完成了这个转换,你可以阅读更多here

    【讨论】:

      【解决方案3】:

      试试这个解决方案:

      ModelName.all.no_timeout.each do |m|
        "do something with model"
      end
      

      https://stackoverflow.com/a/19987744/706022

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-24
        • 1970-01-01
        • 2013-07-25
        • 2011-07-20
        • 2013-05-12
        • 1970-01-01
        • 2012-05-17
        • 2014-05-19
        相关资源
        最近更新 更多