我有一个使用MongoDb的Rails 4.0应用程序。我使用Mongoid作为ORM。直到今天下午,一切都运转正常。
突然间,我收到了随机的错误。
首先来自MOPED的消息:
MOPED: Retrying connection attempt 1 more time(s). runtime: n/a
然后是
Timeout::Error is thrown: Exception: Waited for item but none was pushed.
查看源代码,看起来它在连接池代码中的某个地方是个问题,但我对它不够熟悉。
任何人都有这方面的经验吗?
答案 0 :(得分:0)
你是在运行rails之上的吗? JRuby的?彪马? Sidekiq? 似乎存在一个问题,你在池中没有足够的连接...,或者代码可能在完成后没有释放连接(仍然不太可能发生。 默认连接池大小为5,因此如果您有多个并发请求,则在多线程服务器(如puma)中,您将开始获取这些错误。我认为你应该做的是增加池中的连接数(你可以在mongoid.yml pool_size中传递一个选项)到20或者其他东西。并查看错误是否仍在发生。
如果你仍然认为代码没有释放回到池的连接,你可以在github https://github.com/mongoid/moped/issues/new上打开一个问题