2

我有一个使用 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.

看源码,好像是连接池代码的某个地方有问题,但我对它还不够熟悉,不敢说。

有人对这个问题有任何经验吗?

4

1 回答 1

0

你在什么上面运行铁轨?杰鲁比?彪马?西奇克?似乎有一个问题,你在池中没有足够的连接..,或者代码在完成后没有释放连接(仍然不太可能发生。默认连接池大小为 5,所以如果你有超过 5 个并发请求,在多线程服务器(如 puma)中,您将开始收到这些错误。我认为您应该做的是增加池中的连接数(您可以在 mongoid.yml pool_size 中传递一个选项) 到 20 或什么的。看看错误是否还在发生。

如果您仍然认为代码没有将连接释放回池,您可以在 github https://github.com/mongoid/moped/issues/new上打开一个问题

于 2013-09-28T15:32:17.053 回答