簡體   English   中英

無法流式傳輸大文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM