java.io.IOException: Broken pipe 的异常处理

1. 问题发现

服务器经常发现Broken pipe异常

但是对项目运行又没有什么影响,一直没有关注。

后来在使用websocket的时候重现了该异常,找到问题点,然后开始排查。

2. 问题解决

1. 百度

出现“Broken pipe ”可能的情况:

1、客户端请求服务器数据,服务器突然挂了;

2、客户端请求服务端数据,服务端正常返回,凡是客户端由于超时等原因断开。

2. 分析

服务器正常运行,基本可以确定是因为超时

查看异常日志前面的操作,发现有websocket客户端断开连接,

然后再去看代码

super.afterConnectionClosed(session, closeStatus);

这一行代码不清楚做了什么操作,但可以肯定是客户端下线,服务器做了一些操作,

并且有操作失败了。

3. 解决

1. 开发环境并没有该错误,说明超时原因与配置有关

2. 生产环境与开发环境唯一的区别就是,生产环境使用nginx做了端口映射

3. 经过查询发现,nginx代理websocket需要特殊配置

4. 剩下的就交给运维同事了,经过测试,正常使用,无异常出现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容