解析org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

时间:2024-04-06 15:25:50

前段时间翻服务器应用运行日志,看到这个,作为爱学习的我,立马百度了一下:

认识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连接数量。

具体:

  1. 会话列表翻页
  2. 会话列表限制展示数量
  3. 客户端分组获取会话列表数据

当然,对于服务器来说,该底层异常,并不影响,所以暂可忽略

 

解析org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe