ClientAbortException: java.io.IOException: Broken pipe 解决

ClientAbortException: java.io.IOException: Broken pipe 解决

  • 参考:https://www.jianshu.com/p/d7f5de27fec5
  • 参考:https://blog.csdn.net/zqz_zqz/article/details/52235479
  • 参考:https://www.cnblogs.com/shengs/p/4495998.html

#1、说明
报错:org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

做压力测试的时候遇到这个问题,自己并发的经验不够。在并发数量低的情况下没有遇到这个问题。经过网上搜索,参考了别人的思路

我们的服务器前端通过nginx做后端Java的负载均衡。当并发上来之后,nginx不断的和后端的Java服务器建立连接。虽然做了keep-alive配置,却依然挡不住连接的销毁和创建。

#2、查看超时情况

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

发现TIME_WAIT数量非常之高,也就是nginx这台服务器主动断开连接,导致Java后端往断开的套接字上写数据,于是报错。按照参考链接里的说法做了如下优化,下面的内容摘自别人文章。

#3、解决方案
解决方案很简单,通过修改nginx所在服务器的/etc/sysctl.conf文件,
服务器能够快速回收和重用那些TIME_WAIT的资源

1、修改配置

vim /etc/sysctl.conf

2、配置内容

#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭  
net.ipv4.tcp_syncookies = 1
##表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭  
net.ipv4.tcp_tw_reuse = 1
##表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭  
net.ipv4.tcp_tw_recycle = 1
##表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间  
net.ipv4.tcp_fin_timeout=30

3、生效命令

/sbin/sysctl -p

4、最终结果

TIME_WAIT 降低到正常范围(100以下),java进程也没报错了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ClientAbortException: java.io.IOException: Broken pipe是一个Java异常,表示管道中的数据流突然中断。这个异常通常发生在以下几种情况下:\[2\] 1. 客户端在发起请求后没有等待服务器端响应,而是点击了停止按钮,导致服务器端接收到取消请求。这种情况通常发生在频繁刷新页面的情况下。 2. 客户端发送请求连接时间设置过短,导致后台服务器没有处理完响应,客户端就断开了连接。这种情况比较常见。 3. Web服务器(如Tomcat)在接收用户请求时由于处理能力限制,如线程、内存、服务器等资源限制,超出了其承载范围的请求,就会被服务器停掉,也可能导致该错误。 要解决这个问题,可以考虑以下几个方面:\[1\]\[3\] 1. 增加客户端请求连接的超时时间,确保服务器有足够的时间来处理请求。 2. 优化服务器的处理能力,增加线程数、内存等资源,以提高服务器的承载能力。 3. 避免频繁刷新页面或者点击停止按钮,确保客户端在发起请求后等待服务器端响应。 4. 检查网络连接是否稳定,避免网络中断导致的数据流中断。 总之,解决ClientAbortException: java.io.IOException: Broken pipe的方法包括优化客户端和服务器的设置,确保稳定的网络连接,以及避免频繁刷新页面或点击停止按钮。 #### 引用[.reference_title] - *1* [ClientAbortException: java.io.IOException: Broken pipe 解决](https://blog.csdn.net/qq_24298751/article/details/126023324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解析org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe](https://blog.csdn.net/qq_40223688/article/details/102487757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe](https://blog.csdn.net/weixin_43997319/article/details/123335570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇怪的守护神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值