通过NodeJS进行流式响应的高内存使用率

时间:2017-10-10 19:10:35

标签: node.js express

我遇到了通过节点代理流式传输xlsx文件的问题,因为它消耗了大量内存。该文件大约为11MB,但在从Java服务收到响应时占用大约700MB的内存。我不确定导致这种情况的是什么,因为我正在做的就是直接通过如下方式管理响应:

var express = require('express');
var app = express();
var request = require('request');

app.all('/api/*', function (req, res) {

    var options = transformRequest(req);
    var method = req.method.toLowerCase();

    request[method](options)
        .on('response', function (response) {
            logger.info('method=' + method,
                'nodeEndpoint=' + req.originalUrl,
                'mappedServiceUrl=' + options.url,
                'responseStatusCode=' + response.statusCode);

            res.writeHead(response.statusCode, response.headers);
            if (response.statusCode > 399) {
                logger.error(method, options.url, response.statusCode);
            }
        })
        .on('error', function (err) {
            handleError(err, res);
        })
        .pipe(res);
});

是否有这样的东西,或者看到这么小的文件有如此高的内存使用率是否正常?

0 个答案:

没有答案