node.js – 错误:在处理大异步循环时连接EADDRNOTAVAIL

我遇到了一个非常奇怪的问题.我正在导入一些大的xml文件并将它们存储到mongoDB中. algorythm是一个典型的异步循环:

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有联系,但那是o.k.是mongoDB连接吗?但为什么它会突然丢失?

唯一有助于贯穿整个循环的是在mongo-callback中执行递归循环调用,如下所示:

setTimeout( function() {
    doLoop( it+1, callback_loop );
},1);

谁在那里谁知道这里出了什么问题?

谢谢,
heinob

最佳答案 最后我找到了答案.这是默认全局http代理中的问题.查看完整描述
here.

点赞