我遇到了一個非常奇怪的問題。我正在導入一些大的xml文件並將它們存儲到mongoDB中。該algorythm是一個典型的異步循環:錯誤:在處理大異步循環時連接EADDRNOTAVAIL
doLoop = function(it, callback_loop) {
if(it < no_of_items) {
storeToMongo(..., function(err, result) {
...
doLoop(it+1, callback_loop);
});
} else {
callback_loop();
}
};
doLoop(0, function() {
...
});
現在(突然毫無代碼中的任何顯着變化),我收到以下錯誤而執行循環:
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect EADDRNOTAVAIL
at errnoException (net.js:901:11)
at connect (net.js:764:19)
at net.js:842:9
at dns.js:72:18
at process._tickCallback (node.js:415:13)
錯誤後會發生約一分鐘。在此期間處理的項目總數完全相同,但並不完全相同。
我試圖找出什麼connect/net
導致錯誤,但我迷路了。我的代碼中沒有套接字連接。我與redis有聯繫,但那是。它是mongoDB連接嗎?但爲什麼它突然迷路了?
,有助於在整個循環運行的唯一一件事就是蒙戈回調像這樣內執行遞歸循環調用:
setTimeout(function() {
doLoop(it+1, callback_loop);
},1);
任何人在那裏誰有一個想法是怎麼回事錯在這裏?
感謝, heinob
你確定沒有其他節點正在運行相同的服務器?嘗試grep進程 –
是的,還有另一個節點進程正在運行。但他們過去並沒有打擾過對方。爲什麼setTimeout-workaround「解決」這個問題? – heinob