现象:

背景: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请求)又取消时,才完全重现了此问题:
前端日志:
在这里插入图片描述
后端日志:
在这里插入图片描述

参考:


  1. CSDN:【异常解决】org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStr
    CSDN: java.io.IOException: Broken pipe 线上问题记录 ↩︎

  2. 排查IOException Broken pipe 错误,偶遇国外小哥 ↩︎ ↩︎ ↩︎

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐