2012-03-07 14 views
5

Perché la seguente eccezione si verifica dal driver Mongo C# durante il recupero dell'oggetto dal server MongoDB?Timeout in attesa di MongoConnection

"Timeout in attesa di un MongoConnection."

C'è un modo per impostare questo timeout di connessione da qualche parte o risolvere questo problema?

risposta

4

È possibile utilizzare socketTimeoutMS nella stringa di connessione per aumentare il timeout.

Esempio:

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

L'errore riguarda la connessione, quindi l'argomento 'connectTimeoutMS' è più appropriato qui. 'socketTimeoutMS' è di default infinito quindi il tuo suggerimento non migliora nulla: http://blog.mongolab.com/2013/10/do-you-want-a-timeout/. –

1

Probabilmente si sta eseguendo in questo problema:

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

Il problema è stato risolto e la correzione sarà inclusa nella versione 1.4 del driver C# (uscendo presto).

Nel frattempo, il tuo approccio migliore è quello di aumentare la dimensione del pool di connessioni dal valore di default di 100, che è fatto facilmente sulla stringa di connessione:

mongodb: // localhost/maxpoolsize = 200

Rendere le dimensioni del pool di connessione sufficientemente grandi in modo che ci siano più connessioni di quante siano i thread in esecuzione (o almeno le connessioni sufficienti a soddisfare tutti i thread che richiedono una connessione allo stesso tempo).

+0

È accaduto perché c'era un riferimento ricorsivo nel grafico dell'oggetto e continuava a ricorrere e tentava di estrarre dal server e si è bloccato. Ho dovuto passare attraverso la traccia dello stack aumentando il timeout in modo che fosse visibile una traccia dello stack sufficiente. La modifica della proprietà sopra elencata ha aumentato il timeout. Ricorderò il maxpoolsize. Diventerà utile. – iefpw

Problemi correlati