fs.createWriteStream 停顿

问题描述

我正在使用 npm 包 busboy 来解析多部分表单请求和写入流以将发送的文件写入磁盘。

这适用于小文件,但是当我尝试使用更大的文件 (7MB) 时,似乎只有大约 5MB 被写入磁盘,然后事情似乎停滞了,它永远不会完成,也没有抛出错误。这在本地有效,但在 ECS 上运行时会出现问题。

节点服务器运行在 ECS 上的 docker 容器中

  pipeline(fileStream,fs.createWriteStream(filePath),(err) => {
    if (err) {
      console.log("Pipeline Failed",err);
    } else {
      console.log("Pipleline complete");
    }
  });

有什么想法吗??

解决方法

我最近通过启用访问日志查找“幕后”的 HTTP 状态代码解决了这个问题。就我而言,它是一个 413 状态代码。

有几个步骤可以进行设置,并且它会不时发生变化。查看此处的文档以了解当前步骤和配置:https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging