java.io.IOException: Broken pipe问题记录
本文分析了AIGC项目中SSE流式接口频繁出现的"Broken pipe"和"AsyncRequestNotUsableException"错误。主要原因是客户端提前关闭连接(如超时或主动取消),而服务端仍尝试写入数据。通过Postman和微信小程序测试重现了该问题:Postman测试显示"连接中止",而小程序取消请求时完整复现了错误。该
·
现象:
背景:AIGC项目,有很多SSE流式接口
日志中有比较多的错误记录:org.springframework.web.context.request.async.AsyncRequestNotUsableException || ServletOutputStream failed to flush: java.io.IOException: Broken pipe
原因1,2:

简单来说,就是客户端关闭了连接(原因可能是超时或者主动取消请求等),服务器端在向此已断开的连接写数据
尝试重现:
我按照2中的两种场景尝试进行重现:
场景1:Postman设置超时时间,发送请求;
场景2:Postman未设置超时时间,但在发送请求后立马关闭Postman。
触发的问题与2中提到的略有区别,没看到 Broken pipe,而是“你的主机中的软件中止了一个已建立的连接”:
当我在微信小t程序执行生图(实现为SSE请求)又取消时,才完全重现了此问题:
前端日志:
后端日志:
参考:
更多推荐



所有评论(0)