Node.js 中处理大文件上传的流式方案与内存泄漏排查
最近在维护一个内部素材管理系统时,遇到一个典型问题:用户上传超过 1GB 的视频文件时,服务端内存会迅速飙升,偶尔直接触发 OOM 重启。排查后发现,问题出在早期用 fs.readFile 一次性读取整个文件再写入磁盘的写法上。大文件上传场景在后台管理系统、网盘、媒体资源库中非常常见,核心矛盾在于 Node.js 的 Buffer 默认在堆外分配,但同步读取大文件会让整个内容驻留内存,加上并发上传,很容易把进程压垮。这篇文章从实际代码出发,梳理如何用流式管道处理上传,以及几个容易踩坑的内存泄漏点&mdash...