2012-03-07 135 views
5

爲什麼在從MongoDB服務器獲取對象時,Mongo C#驅動程序發生以下異常?等待MongoConnection的超時

「等待MongoConnection的超時。」

有沒有辦法在某處設置此連接超時或解決此問題?

回答

4

您可以在連接字符串中使用socketTimeoutMS來增加超時。

例子:

mongodb://localhost/myCollection?socketTimeoutMS=60000 
+0

錯誤是關於連接,所以'connectTimeoutMS'參數在這裏更合適。 'socketTimeoutMS'默認情況下是無窮大,所以你的建議不會改善任何事情:http://blog.mongolab.com/2013/10/do-you-want-a-timeout/。 – 2014-05-27 15:50:31

1

你可能會遇到這個問題,:

https://jira.mongodb.org/browse/CSHARP-406

的問題已得到修復和修補程序將包含在1.4版本的C#驅動程序(即將推出)。

在此期間,你最好的辦法是從100的默認值,這是很容易在連接字符串完成增加連接池的大小:

的mongodb://本地主機/ maxpoolsize = 200

使連接池大小足夠大,以便存在比運行線程更多的連接(或者至少有足夠的連接來滿足所有需要同時連接的線程)。

+0

發生這種情況是因爲在對象圖中存在遞歸引用,並且它一直在遞歸併試圖從服務器拉出來並崩潰。我必須通過增加超時來檢查堆棧跟蹤,以便可以看到足夠的堆棧跟蹤。更改上面列出的屬性增加了超時時間。我會記住maxpoolsize。它會變得有用。 – iefpw 2012-03-08 06:53:43