我遇到了一个非常奇怪的问题。我正在导入一些大的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