2012-03-07 16 views
5

Dlaczego następujący wyjątek występuje w przypadku sterownika Mongo C# podczas pobierania obiektu z serwera MongoDB?Limit czasu oczekiwania na MongoConnection

"Czas oczekiwania na połączenie Mongo".

Czy istnieje możliwość ustawienia limitu czasu połączenia lub rozwiązania tego problemu?

Odpowiedz

4

Możesz użyć socketTimeoutMS w ciągu połączenia, aby zwiększyć limit czasu.

Przykład:

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

Błąd dotyczy połączenia, dlatego bardziej odpowiedni jest tutaj parametr 'connectTimeoutMS'. 'socketTimeoutMS' jest domyślnie nieskończonością, więc twoja sugestia niczego nie poprawia: http://blog.mongolab.com/2013/10/do-you-want-a-timeout/. –

1

Prawdopodobnie używasz w tym numerze:

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

Problem został naprawiony i poprawka zostanie zawarte w 1.4 uwolnienia kierowcy C# (wkrótce).

W międzyczasie, najlepszym rozwiązaniem jest, aby zwiększyć rozmiar puli połączeń z domyślnej wartości 100, który jest łatwo zrobić w ciągu połączenia:

MongoDB: // localhost/maxpoolsize = 200

Ustaw rozmiar puli połączeń wystarczająco duży, aby było więcej połączeń niż wątków uruchomionych (lub co najmniej tyle połączeń, aby wszystkie wątki wymagały połączenia w tym samym czasie).

+0

Stało się tak, ponieważ na grafice obiektu istniało odniesienie rekurencyjne, które ciągle się recursowało i próbowało wyciągnąć z serwera i uległo awarii. Musiałem przejść przez ślad stosu, zwiększając limit czasu, więc było wystarczająco dużo śladu stosu. Zmiana powyższej właściwości zwiększyła limit czasu. Zapamiętam maxpoolsize. Stanie się użyteczny. – iefpw

Powiązane problemy