2012-03-07 86 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