Node.js 中 stream 背压处理:从一次内存暴涨说起
前段时间排查一个日志聚合服务的内存问题,现象是进程 RSS 持续上涨,跑几个小时后直接触发 OOM 被系统 kill 掉。服务逻辑很简单:从上游 Kafka 消费日志,经过少量变换后写入本地文件做归档。代码里用了 fs.createWriteStream 和 pipeline,看起来挺标准,但问题出在对背压的忽略——上游消费速度远高于磁盘写入速度,write() 返回 false 之后没有暂停读取,可写流内部的缓冲队列无限增长,最终把内存吃光。Node.js 的流机制里背压是核心设计...