Broken pipe
比较常见的一个问题。
但是并不是每个人都能说清楚。
首先注意下写法:
Broken pipe # B大写 p小写 主要是grep的时候别写错了
常见的原因
1、客户端关闭连接。
在服务器端处理请求的过程中,客户端突然关闭了连接,例如浏览器关闭、网络断开等。这时,服务器端尝试写入数据到已经关闭的连接,就会触发这个异常。
2、超时。
如果网络连接在传输数据的过程中超时,并且另一端关闭了连接,也会发生这个错误。
3、网络问题。
由于网络不稳定或网络故障导致的连接中断。例如,路由器、交换机等网络设备出现问题。
4、服务器资源不足。
服务器资源耗尽,例如线程池、连接池用尽,导致连接无法继续维护。
所以重点来了,这是在服务端报错,但是原因是在客户端。
例如:
a服务 请求b服务
b服务执行时间比较长,100多s,但是a服务设置的超时时间是60s,那么b服务会报错Broken pipe。
实际Broken pipe场景
a服务导出 请求b服务进行查询 b服务的查询比较慢,100多s,a服务超过60s关闭连接了,所以b服务报错Broken pipe。
通过日志发现和分析相符,证实了这一结论。