前段时间翻服务器应用运行日志,看到这个,作为爱学习的我,立马百度了一下:
认识broken pipe
pipe是管道的意思,管道里面是数据流,通常是从文件或网络套接字读取的数据。 当该管道从另一端突然关闭时,会发生数据突然中断,即是broken。 对于文件File来说,这可能是文件安装在已断开连接的光盘或远程网络上。 对于socket来说,可能是网络被拔出或另一端的进程崩溃。 在Java中,没有具体的BrokenPipeException。 将此类错误包含在另一个异常,例如java.io.IOException:Broken pipe
问题分析:
1、报文过大:处理的报文过大,导致客户的端无法解析报文。
2、文件过大:处理时间过长,由于执行时间较长或频率较高,程序或服务器出发超时直接结束进程。
3、重复提交:处理时间过长导致当客户端重复发送请求,而上次请求尚未完成,下次请求会close上次请求。
4、数据库配置问题:mysql配置文件忘记配置wait_timeout参数,导致数据库连接顺序关闭(RS、PS、CONN)。
5、另外就是:Java虚拟机内存太小或者使用低版本的JVM,出发垃圾回收。
由于kill进程我们无法控制,故只能通过降低接口处理时间,减少用户kill进程时未完成的TCP连接数量。
具体:
- 会话列表翻页
- 会话列表限制展示数量
- 客户端分组获取会话列表数据
当然,对于服务器来说,该底层异常,并不影响,所以暂可忽略