码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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]}'
    
    • 1

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

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

    1、修改配置

    vim /etc/sysctl.conf
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3、生效命令

    /sbin/sysctl -p
    
    • 1

    4、最终结果

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

  • 相关阅读:
    基于YOLOv5的火灾烟雾检测系统
    什么是redis,redis能做什么,redis的应用场景
    蓝桥杯 枚举算法 (c++)
    IEDA使用maven搭建ssh框架步骤详解
    计算机毕业设计 基于java的高校竞赛和考级查询系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    K8S 部署和访问 Kubernetes 仪表板(Dashboard)
    引用——C++
    OpenCV实战(30)——OpenCV与机器学习的碰撞
    【MySQL 安装】基本操作命令
    全球创业浪潮:跨境电商的创新时代
  • 原文地址:https://blog.csdn.net/qq_24298751/article/details/126023324
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号