2014-07-09 17 views
8

Używam map-zmniejszyć pracę z mgo. Działa na kolekcji z nieco ponad 3,5M rekordów. Z pewnych powodów nie mogę tego przenieść do agregacji; może później. Tak więc redukcja map jest tym, na co czekam. To zadanie, gdy uruchomię go z oryginalnych plików js, które utworzyłem, aby przetestować kod i wyjście, działa dobrze. Próbowałem umieścić mapę i zredukować kod wewnątrz dwóch ciągów, a następnie próbowałem wywołać mgo.MapReduce, aby zrobić mapę - zmniejszyć dla mnie, gdzie piszę dane wyjściowe w innej kolekcji. I to daje mii/o limit czasu z mgo i mongodb

odczytu tcp 127.0.0.1:27017: I/O Timeout

Choć, jak zadanie zostało wypalane w odwrocie-ziemia jest jeszcze uruchomiony. Teraz zgodnie z tym wątkiem tutaj --- http://grokbase.com/t/gg/mgo-users/1396d9wyk3/i-o-timeout-in-statistics-generation-upsert

Łatwo jest rozwiązać, wywołując sesja.SetSocketTimeout, ale nie chcę tego zrobić, ponieważ całkowita liczba dokumentów, na których działa ta mapa-zmniejszyć będzie się różnić i w związku z tym uważam, że czas. Tak więc, jak sądzę, nigdy nie będę w stanie rozwiązać problemu.

Jakie są inne sposoby, w jakie mogę mieć?

Proszę mi pomóc

+0

Naprawdę nie odpowiedź, ale zawsze można ustawić limit czasu na coś naprawdę długo i sprawdzić, czy działa na przykład: 'session.SetSocketTimeout (1 * time.Hour)', również z ciekawości, ile czasu zajmuje uruchomienie z pliku js? – OneOfOne

+0

Około 10 mennic. Pomyślałem o tym także, co mi powiedziałeś. ale jak wspomniałeś, nie jest to "właściwe" rozwiązanie. pozwól mi zobaczyć, co mogę wymyślić. – SRC

+1

Naprawdę nie sądzę, że istnieje właściwe rozwiązanie dla tego konkretnego problemu. – OneOfOne

Odpowiedz

13

Przeniesienie mojego komentarza do odpowiedzi.

wierzę, że jedynym sposobem, aby rozwiązać ten jest po prostu ustawienie timeout gniazda na coś absurdalnie wysokie, na przykład:

session.SetSocketTimeout(1 * time.Hour) 
+0

nie działa dla mnie. Zobacz to: https://github.com/globalsign/mgo/issues/21 –