Node.js 中 fs.promises 与 fs.readFile 在并发读取大量文件时的内存与句柄控制
在 Node.js 服务端处理批量文件上传、日志归档或者静态资源预处理时,经常需要一次性读取几十甚至上百个文件。不少开发者习惯用 Promise.all 配合 fs.promises.readFile 直接并发,代码写起来很顺手,但当文件数量上去或者单个文件体积较大时,进程内存会快速攀升,甚至触发 EMFILE 错误——系统打开的文件描述符数量超过了限制。这个问题在容器化部署中尤其明显,因为容器的默认句柄上限往往比宿主机更低。原因并不复杂:Promise.all 会同时发起所有 re...