我有2个节点js服务器A和B,其中A连接到B以获取文件(大文件)。这是我用来处理流的代码。
var downloadedAmount = 0;
stream.on('data', function (data) {
if (Buffer.isBuffer(data)) {
downloadedAmount += data.toString('utf8').length;
} else {
downloadedAmount += data.length;
}
if (!res.write(data)) {
stream.pause();
}
});
res.on('finish', function () {
console.log("Finish called");
sendUsage(reqId, downloadedAmount); // this is a async db/network call
});
stream.on("end", function () {
console.log("End called");
res.end();
});
res.on("drain", function () {
stream.resume();
});
当它只是一个正在下载的文件时,它会下载文件。我的问题是当我尝试下载多个文件(大于300MB),这会增加服务器的负载,连接在B处关闭,所有文件都停在124MB。谁能告诉我这里我做错了什么?
更新:问题在于B服务器,因为直接多次下载(从浏览器请求)也倾向于停止在124MB左右。
答案 0 :(得分:0)
确定。似乎问题完全在不同的位置。我更改了Apache服务器设置(B服务器使用它来获取文件
)EnableSendfile On
现在可行。