Broken pipe异常分析及解决
Posted 幽灵雾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Broken pipe异常分析及解决相关的知识,希望对你有一定的参考价值。
Broken pipe异常分析报告
1.错误描述
ClientAbortException: java.io.IOException: Broken pipe
可能出现原因:
TCP服务端write数据时,收到SIGPIPE信号(连接已经终止)
场景:
- TCP握手尚未结束时,连接已经close;
- 服务端收到一次read,但write了多次;
- 连接通道被占满,新连接被拒绝时,client中断了所有连接。
2.分析过程
2.1.初步排查
每次出现该异常时,总是伴随/im/getUsercInfos.json接口的调用。
2.1.1具体现象
- 异常记录时间=接口请求记录时间(server连接write前记录)-(2至10)ms;
- 总是ios设备爆出;
- 总是h端爆出。
2.1.2分析
-
可能性一:
在请求该接口时,ios设备在某种情况下会中断该请求,导致TCP连接中server端无法向client端write数据。即在server端write之前连接已经close,write时出现异常。
由于只有h端出现,但h、b客户端代码一致,不太可能单独出现,故可能性较低。 -
可能性
以上是关于Broken pipe异常分析及解决的主要内容,如果未能解决你的问题,请参考以下文章
golang服务报错: write: broken pipe
使用 Ktor HttpClient(CIO) websocket 发送内容时如何捕获 Broken pipe 异常?