I / O节点是否有任何限制?

时间:2014-07-26 01:09:08

标签: node.js io v8 nonblocking

我正在编写一个从某个地方下载一个文件的代码,我正在实时流式传输到客户端。我的服务器中的文件永远不会满了。只有块。这是代码:

downloader.getLink(link, cookies[acc], function(err, location) {
    if (!err) {
        downloader.downloadLink(location, cookies[acc], function(err, response) {
            if (!err) {
                res.writeHead(200, response.headers);
                response.pipe(res);
            } else
                res.end(JSON.stringfy(err));
        });
    } else {
        res.end(JSON.stringfy(err));
    }
});

正如我所看到的,由于响应来自一个简单的http.response,因此没有任何阻止此代码... 问题是,这样我只能同时传输6个文件。但是服务器没有使用所有资源(CPU 10%,内存10%)而且它是单核心。在+/- 5个文件之后,我只获得加载页面,并且仅在其中一些文件完成后才开始流。

这不是对我下载文件的第一台服务器的限制,因为使用我的浏览器,例如我可以下载任意数量的文件。我在做什么wrog或者这是节点的一些限制,我可以改变?感谢

1 个答案:

答案 0 :(得分:2)

如果您的代码使用的是node.js核心http模块http.Agent,则其初始限制为5 simultaneous outgoing connections to the same remote server。尝试阅读substack的rant in the hyperquest README了解详细信息。但简而言之,尝试使用不同的模块进行连接(我建议使用superagent或hyperquest),或者调整http代理的节点核心http模块的maxSockets设置。