TCP连接出现大量CLOSE_WAIT不回收的问题排查

news2024/9/23 23:22:58

背景

日常运维过程中,收到“应用A”突然挂起没有处理请求的告警,然后触发“存活检查”不通过,自动重启了。

问题

为什么“应用A”突然挂起?

分析

排查过程很长,走了很多弯路,这里只列出本案例有效行动:

  • jstack 1  > /tmp/1.log      反复dump 出多个java线程文件进行分析。
  • netstat -anp | grep CLOSE_WAIT    统计CLOSE_WAIT

发现一个规律,端口8085 CLOSE_WAIT 出现的次数与java线程文件的“"http-nio-8085-exec-7" #109 daemon prio=5 os prio=0 tid=0x00007f90ced37000 nid=0x77 in Object.wait() [0x00007f9074965000]” 次数一致

进一步分析,java出现Object.wait()是一个对象锁,让线程进入“等待状态”

行动

与开发沟通,通过检查代码没有显式声明object.wait() , 经过反复排查,最后怀疑是okhttp的bug,开发同学查阅后发现果然是bug

“https://github.com/square/okhttp/issues/7942  这个是okhttp3.8.1的版本问题,升级一下到3.14.9,”

结论

升级okhttp到3.14.9 , 经过复核后,没有在发现类似的情况。

备注

okhttp的超时间设置:

private static final int CONNECT_TIMEOUT = 10;
private static final int READ_TIMEOUT = 3;
private static final Int WRITE_TIMEOUT = 10;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1201829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

金蝶云星空与金蝶云星空对接集成盘亏单查询打通盘亏单新增

金蝶云星空与金蝶云星空对接集成盘亏单查询打通盘亏单新增 接通系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&am…

什么是权限?(Linux篇)

前言 其实我们在学会运用一些简单的Linux指令之后,我们可以简单的用ls查看当前目录的文件有哪些啊,可以使用tree用树形结构查看目录,可以使用touch来创建文件,用mkdir创建目录,可以使用rm来删除目录和文件,…

酷柚易汛ERP - 发货地址管理操作指南

1、应用场景 对发货地址进行管理,使用【物流服务】时的自动获取发货地址。 2、主要操作 打开【资料】-【发货地址管理】新增发货地址。 可以对进行地址设置及管理,点击【新增】可添加新的发货地址信息地址简称方便使用者在选择发货地址时,…

【毕业论文】基于微信小程序的大学生互助平台设计与实现

完整下载链接https://download.csdn.net/download/No_Name_Cao_Ni_Mei/88519756 基于微信小程序的大学生互助平台设计与实现 Design and Implementation of a College Student Assistance Platform based on WeChat Mini Program 目录 目录 2 摘要 3 关键词 4 第一章 绪论 4 1.…

[RoarCTF 2019]Easy Java1

提示 WEB-INF/web.xml泄露 后拿到题目的一般想到的正常思路 sql注入弱口令 先信息收集不进行操作 有download,难道是下载文件,访问看看 这里访问抓包试了下,传送后返回码是200,说明应该可以访问,但是看响应包像是报错…

淘宝API接口成为淘宝商家及企业ERP系统不可或缺的重要因素

API全称为Application Programming Interface,中文是应用程序编程接口。它其实是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 那如果…

Git常用指令以及常见问题解决

摘要:记录本人Git常用指令以及常见问题解决 1.Git流程 2.具体操作 git init:初始化目录(一般直接git clone远端的工程,这一步都可以省略掉); 输入命令“git config --global user.name xxx”来配置你的用…

Outlook搜索功能不全

Outlook搜索功能不全 解决方案 1、当打开Outlook想搜索内容,但无法搜索或者搜索不全时。 2、关掉Outlook在桌面上找到此电脑,右键管理 3、进入计算机管理后---服务和应用---服务----找到Windows Search--右键启动或者重新启动即可

ChatkBQA:一个基于大语言模型的知识库问题生成-检索框架11.13

ChatkBQA:一个基于大语言模型的知识库问题生成-检索框架 摘要1 引言3 准备工作4 方法4.1 ChatKBQA概述4.2 在LLMS上进行高效微调4.3 用微调LLMS生成逻辑形式4.4 实体和关系的非监督检索4.5 可解释查询执行 摘要 基于知识的问答(KBQA)旨在从大…

【网络】TCP协议理论

TCP协议理论 一、TCP协议简介1、浅谈可靠性2、UDP协议存在的意义 二、TCP的协议格式TCP的解包和分用 三、确认应答机制一种应答方式——捎带应答 四、超时重传机制超时等待时间 五、流量控制1、TCP的缓冲区2、TCP的窗口大小3、TCP的PSH标志位 六、TCP的六个标志位URG字段的详细…

泊车功能专题介绍 ———— AVP系统技术要求之地图数据感知要求

文章目录 地图数据规范地图图层和表达要求地图各类数据属性要求SLAM地图要求坐标系数据采集车传感器数据采集数据流程 感知功能要求车端感知功能关键安全感知次要安全感知功能感知体验相关感知 车-场协同感知类型一:引导类型二:重点地段增强类型三&#…

Unit3:贪心算法

文章目录 一、介绍二、分数背包问题问题描述分析时间复杂度伪代码案例彩蛋 三、活动选择问题问题描述分析伪代码时间复杂度拓展:加权活动选择分析计算伪代码时间复杂度案例 对比动态规划和贪心算法 四、哈夫曼编码分类定长编码 目标变长码 案例分析伪代码时间复杂度…

【ArcGIS Pro二次开发】(75):ArcGIS Pro SDK二次开发中的常见问题及解决方法

ArcGIS Pro SDK二次开发路程也近一年时间了,这里总结一下平时遇到的一些问题和解决方法。有些问题没能解决,也记录下来,提醒自己不要忘记。 一、在VS2022中进行调试弹出错误 正常在VS2022中,如果要调试程序的话,直接按…

【工具】QQ音乐本地下载(亲测可用)

目录 0.环境 1.详细步骤 1)电脑端打开QQ音乐,登录 2)随便搜一首歌,在界面上按【F12】打开开发者工具界面,点击【播放】 3)进入播放界面后,点击【网络】,再点击【媒体】 4&…

职场人实用办公技能 | 数据可视化模板

套用模板,不仅报表做得快,数据可视化效果也足够美观,但有些职场人还不太了解从哪些工具上可获得兼具实用性、美观性的BI数据可视化模板,接下来就来介绍一款可提供大量系统化可视化模板的BI工具——奥威BI工具。 奥威BI工具&#…

idea报错java: 程序包com.alibaba.fastjson不存在,明明存在!

经常从线上拉下来代码后编译运行时会报这个错误。刷新maven也没用,重新导入项目也没用 发现解决方法如下: 找到当前报错文件的路径。找到iml文件 删除它!然后刷新maven 就好了!!! 记录一下我的解决方法&…

代码随想录算法训练营第四十八天丨 动态规划part11

123.买卖股票的最佳时机III 思路 这道题目相对 121.买卖股票的最佳时机 (opens new window)和 122.买卖股票的最佳时机II (opens new window)难了不少。 关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。 接来下我…

YOLO V1中关于bounding boxs的部分要点

YOLO的核心原理预览 YOLO将输入的图片resize成448 x 448,并且为 S x S(S 7)个grid,如果物体的中心落入该grid中,那么该grid就需要负责检测该物体。一次性输出所检测到的目标信息,包括类别和位置。 对于每一…

聚力未来!云起无垠成为光合组织成员单位

近日,云起无垠正式加入海光产业生态合作组织(简称“光合组织”)。云起无垠将与光合组织联合打造安全、好用、开放的产品与解决方案,满足企业的安全检测需求,帮助企业解决业务系统上线前的安全检测和修复问题。 图1 光合…

2016Outlook邮箱启动提示找不到文件Outlook.pst

2016Outlook邮箱启动提示找不到文件Outlook.pst 故障现象 Outlook邮箱启动提示找不到文件Outlook.pst 故障截图 故障原因 数据文件损坏 解决方案: 1、开始 –>运行–>输入cmd,或win键R–>输入cmd 2、命令行下,使用cd命令切换到…