Sidekiq工人使用太多的mongo连接

时间:2013-05-14 16:17:31

标签: ruby mongodb mongomapper sidekiq

我在MRI 1.9.3下运行Sidekiq,并使用MongoMapper作为我的ORM。

我的Sidekiq工人经常死于以下例外:

Mongo::ConnectionTimeoutError: could not obtain connection within 15.0 seconds. 
The max pool size is currently 40; consider increasing the pool size or timeout.

Sidekiq配置为以30的并发级别运行。

正如你所看到的,我已经将我的Mongo连接池设置为40,超时时间为15秒,认为应该为我所有活动的Sidekiq线程提供足够多的mongo连接。

然而,这种异常经常发生,特别是当活跃工人的数量接近最大值时。

我在Sidekiq wiki上看到过关于Mongoid的一些提及:https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#too-many-connections-to-mongodb

然而,Mongoid使用MongoMapper的不同mongo驱动程序,所以kiqstand中间件没有帮助。

MongoMapper使用官方的mongo驱动程序,它应该是线程安全的,并使用连接池。

在线程完成时,Sidekiq服务器中间件需要发生什么才能释放MongoMapper连接?

0 个答案:

没有答案