老 MES 系统新上了一套异步导出:后台游标逐行读、流式写 Excel,完成后落下载记录并弹桌面提醒,用户去”下载中心”页面取件。上线当天就收到一条诡异的反馈:
- 几十 KB 的小文件,点击即下,一切正常;
- 72MB 的大文件,一点下载立刻失败,下载栏直接飘红。
与此同时,网关(Spring Cloud Netflix Zuul 1.x)日志里躺着与失败时刻精准对应的 WARN:
1 | o.s.c.n.z.f.post.SendResponseFilter : Error while sending response to client: java.io.IOException: Broken pipe |
报错在网关,现象在前端,最后”凶手”却锁定在页面里一行毫不起眼的”善后”代码上。这次排查横跨浏览器、nginx、网关、后端四层,值得完整复盘——因为每一层的日志都”无罪”,唯一有罪的代码行离报错现场隔了三层。

