2013-09-28 42 views
2

我有一個使用MongoDb的Rails 4.0應用程序。我使用Mongoid作爲ORM。直到今天下午,一切都很順利。突然出現連接問題

突然,我得到隨機timout錯誤。

首先從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

我剛打開的問題今天的這個問題......在一小時內嚇壞了並認爲這可能是因爲我在本週在墨西哥,代理人很奇怪。如果我可以調高10倍,我會。 –

回答

0

你在運行軌道上的什麼? JRuby的?彪馬? Sidekiq? 似乎有一個問題,你沒有足夠的連接在池中,或者也許代碼在完成後沒有釋放連接(仍然不可能發生) 默認的連接池大小是5,所以如果你有超過5個併發請求,在一個多線程服務器(如美洲獅),你會開始得到這些錯誤。我認爲你應該做的是增加池中的連接數量(你可以傳遞一個選項在mongoid。陽明海運pool_size)20或什麼的。看看是否錯誤仍然發生。

如果你還事代碼已釋放的連接返回到池中,你可以在github上https://github.com/mongoid/moped/issues/new

+0

我只是用WEBrick在Ruby 2.0上運行一個相當標準的安裝。我在閱讀完https://groups.google.com/forum/#!topic/mongoid/yesQ2AHtPyI後認爲pool_size選項不再適用。但是,將其設置爲更高的值後,問題就會消失。感謝您的建議! – user2825755

+0

thats old ... on mongoid 4.你應該設置pool_size。我只是不明白你是如何泄漏連接,如果你正在WEBrick上運行MRI。這超級奇怪。 –

+0

這正是我的問題。我不明白這是如何發生的。我很想有一個解釋,所以我更好地理解。 – Elyasin