Node.js 中 stream 背压处理不当导致的内存暴涨与实战修复
在 Node.js 里用 stream 做文件读写、日志转发或者代理下载时,很容易遇到进程内存一路涨到几个 G 甚至触发 OOM 的情况。问题通常不是流本身有泄漏,而是上游生产速度和下游消费速度不匹配,同时又没有正确处理 write() 返回的 false 和 drain 事件,导致数据在内部缓冲队列里越堆越多。这篇文章从一个真实的日志转发服务出发,分析可写流背压信号被忽略时内存为什么会持续增长,结合 Readable、Writable 和 pipeline 的行为差异,给出在自定义 Transform 和...