【问题标题】:Optimize stream read-write operation in NodeJs优化NodeJs中的流读写操作
【发布时间】:2022-11-24 21:09:06
【问题描述】:

我正在使用 npm 包傀儡流得到溪流.该流包含音频视频在捕获流之后,我将流通过管道传输到一个文件中。稍后,当我记录完我需要的所有内容后,我只需简单地关闭我的文件,将其上传到AWS S3并销毁流。

这是我的代码:

        stream = await getStream(page, { audio: true, video: true, bitsPerSecond: 60 });
        stream.pipe(file);

在我记录完所有内容之后:

        file?.close();
        await stream?.destroy(); 
        const fileName = 'filename', fileDir = 'filedir';
        const awsObjectInfo = await awsService.uploadFileToS3(file, fileName, fileDir);

期间记录通常超过1小时.

最初这种方法工作正常,但不是很优化。在服务器端我使用aws ec2 类型 t2.medium 实例但在这个过程中中央处理器利用率非常高(例如:95%)视音频变得很断断续续.

我怎样才能优化这个文件写入操作所以它消耗更少的 cpu 功率,有人可以建议一些方法来解决这个问题吗?

【问题讨论】:

    标签: node.js amazon-web-services optimization stream puppeteer


    【解决方案1】:

    您可以将流直接传递给 s3 上传,而不是将其写入您的服务器。

    它看起来像这样:

    stream = await getStream(page, { audio: true, video: true, bitsPerSecond: 60 });
    s3.upload({ Body: stream }, (err, data) => { /*..some code*/ });
    

    当流完成写入时,将调用 s3 上传回调。

    这样可以节省一些cpu。希望这是帮助。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 2016-10-09
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 2019-07-18
      • 2015-05-29
      相关资源
      最近更新 更多