[英]Cannot stream large files
我有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左右。
好。 問題似乎完全在另一個位置。 我更改了Apache服務器設置(B服務器用來將文件獲取到
EnableSendfile On
現在可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.