2012-03-07 13 views
5

¿Por qué ocurre la siguiente excepción del controlador Mongo C# al obtener un objeto del servidor MongoDB?Tiempo de espera esperando un MongoConnection

"Timeout waiting for a MongoConnection."

¿Hay alguna manera de establecer este tiempo de espera de conexión en alguna parte o solucionar este problema?

Respuesta

4

Puede usar socketTimeoutMS en su cadena de conexión para aumentar el tiempo de espera.

Ejemplo:

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

El error es sobre la conexión, por lo que el argumento 'connectTimeoutMS' es más apropiado aquí. 'socketTimeoutMS' es por defecto infinito por lo que su sugerencia no mejora nada: http://blog.mongolab.com/2013/10/do-you-want-a-timeout/. –

1

Usted probablemente está ejecutando en este tema:

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

El problema se ha solucionado y el arreglo será incluida en la versión 1.4 del controlador C# (saliendo pronto).

Mientras tanto, el mejor enfoque es aumentar el tamaño de la agrupación de conexiones desde el valor predeterminado de 100, que se hace fácilmente en la cadena de conexión:

mongodb: // localhost/MaxPoolSize = 200

Haga que el tamaño del grupo de conexiones sea lo suficientemente grande como para que haya más conexiones que hilos en ejecución (o al menos suficientes conexiones para satisfacer todos los hilos que necesitan una conexión al mismo tiempo).

+0

Ocurrió porque había una referencia recursiva en el gráfico de objeto y se mantuvo recurriendo e intentando extraer del servidor y se bloqueó. Tuve que ir a través de la traza de la pila al aumentar el tiempo de espera para que fuera suficiente el seguimiento de la pila. Cambiar la propiedad enumerada arriba aumentó el tiempo de espera. Recordaré el maxpoolsize. Se volverá útil. – iefpw

Cuestiones relacionadas