记一次内存泄漏排查

news2025/1/19 8:15:00

记一次内存泄漏排查

文章目录

  • 记一次内存泄漏排查
    • 背景
    • 问题排查
    • 问题处理

背景

最近某项目的服务突然告警,cpu超85%,随后就是服务宕机。交付重启服务后恢复正常但是随后不久又开始告警,特别是白天,严重影响客户业务进行。

问题排查

1、分析日志
查看日志的过程中发现存在内存溢出(OOM),思考要么存在内存泄漏要么业务上触发了某个接口存在大对象,结合业务情况,应该是前一种情况大一些。
在这里插入图片描述

2、查看CPU占用高的线程
按步骤

  1. top 找到cpu高的进程
  2. top -Hp pid 找到进程中cpu占的比较高的线程
  3. printf ‘%x’ 线程id 打印出线程16进制id
  4. jstack pid >xxx.txt 将线程信息输出到某个文件方便查询
  5. 将cpu高的那个在步骤4中的xxx.txt中搜索出来

排查出线程都是: gc task thread parallelgc 这类线程(忘记截图了)占用CPU高。那么这里其实可以大致得出结论了。

3、用arthas dashboard 查看应用运行情况
老年代占比98%,随后CPU飙升(很多公司生产可能都不允许使用arthas,上面步骤2其实基本可以得出结论了)

4、结论
代码存在内存泄漏,老年代占用率过高,导致系统频繁full gc ,从而系统CPU飙升直至宕机。

问题处理

1、给启动参数加上 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录} (这块疏忽,之前没加)
2、使用 MAT 分析 hprof文件

这里有个插曲,hprof文件太大,导致MAT打开报OOM。如果你是eclipse中安装的MAT 插件,可以在 setting(perferences)-> java -> Installed JREs -> jre -> edit -> variables 设置 内存大小 :
server -Xms4096m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=512m
在这里插入图片描述

3、找到内存泄漏代码
有MAT帮忙,找到对应泄漏代码其实就简单多了。找到内存占用最大得结果线程进行查看就能看到对应的代码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、修改代码
看了下,是代码查询的时候,一次查询list过大导致的。后续和相关开发沟通后,优化了sql,重新发包部署。

5、观察
一段时间后服务器cpu恢复平稳~~~~~
在这里插入图片描述

至此,本次排查结束,服务CPU恢复正常状态。后面又了解,为啥之前服务运行的好好的,最近这么频繁宕机,一个是内存泄漏,还有就是业务方系统全面铺开,业务压力骤增,从原来的日均五万的量增加到了十万,后续可能还会增加,借此机会和业务方沟通,又升级了服务硬件配置,嘻~~~~

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

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

相关文章

【分享贴】如何衡量和提高项目成功?

“如何衡量项目成功?” 无论是对于项目经理还是组织来说都希望项目能够成功,但是怎样才算是项目成功了呢? 世界项目管理大师哈罗德科兹纳认为:“传统项目或运营项目成功的衡量标准是时间、成本和范围;创新项目成功的衡…

函数调用、

1、函数调用 重载了函数调用运算符&#xff08;&#xff09;的类 实例化的对象 就叫做函数对象 函数对象 &#xff08;&#xff09;触发 重载函数调用运算符 执行 》类似函数调用 &#xff08;仿函数&#xff09; #include <iostream> using namespace std; class Pr…

【hello Linux】Linux第一个小程序 - 进度条

目录 先来区分两个标识符&#xff1a;回车和换行 1. 倒计时 2. 进度条 Linux&#x1f337; 下面来编写Linux系统下的第一个小程序 - 进度条 先来区分两个标识符&#xff1a;回车和换行 \r 和 \n \r 回车 &#xff1a;代表回到本行的开头&#xff1b; \n 换行 &#xff1a;代表…

【Linux】vscode的使用 | 进程间通信(简单概括)

文章目录1.vscode的下载2. vscode的使用1. 连接远端2. 在vscode创建文件并运行程序切换到命令行3. 安装常见插件3. 进程间通信1. 简单举例2.管道原理为什么把读写都打开&#xff0c;只打开读或者写不可以吗&#xff1f;3. 通过父子进程理解管道1. 创建匿名管道系统调用为什么可…

不用996,不用007,赚的还比我多?我直接好家伙

今天打开手机就看见信息99&#xff0c;哟吼&#xff0c;还挺热闹——感情都在上班摸鱼呢。 好奇心让我点了第一条未读信息&#xff0c;好家伙&#xff0c;直接让我手机闪退出APP了&#xff01; 嗨&#xff0c;我这暴脾气&#xff0c;直接手动滑到了第一条&#xff01;但是我没…

CentOS7-部署Tomcat并运行Jpress

1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用。1、简述静态网页和动态网页的区别 静态网页&#xff1a; 请求响应信息&#xff0c;发给客户端进行处理&#xff0c;由浏览器进…

009:Mapbox GL点击click某位置,显示坐标信息

第009个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中点击某位置,显示坐标信息 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共81行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:htt…

一行代码就能完成的事情,为什么要写两行?

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 三元运算符 用三元运算符代替简单的if else if (age < 18) {me 小姐姐; } else {me …

MIMO-OFDM无线通信技术(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 本代码为MIMO-OFDM无线通信技术及MATLAB实现。分为十章&#xff0c;供大家学习。 &#x1f4da;2 运行结果 主函数部分代码&a…

移动端架构师都需要具备怎样的技术栈和能力

移动端架构师都需要具备怎样的技术栈和能力 主要的能力 技术深度 技术广度 动手能力: 比如说造轮子的能力, UI(高级自定义UI, 通用UI组件库), LibrarySDK(通用基础库, 项目框架/架构) 经验丰富 辅助的能力 领导力 沟通能力 洞察与前瞻 赋能业务 技术栈 T字形技术栈语言语言高…

TPS79650DCQR低压差线性稳压器、TPS54040ADGQR一款42V,0.5A降压稳压器数据手册资料

TPS79650DCQR低压差&#xff08;LDO&#xff09;低功耗线性稳压器具有高电源抑制比&#xff08;PSRR&#xff09;、超低噪声、快速启动&#xff0c;以及出色的线路和负载瞬态响应&#xff0c;采用小外形、33 VSON、SOT223-6和TO-263封装。该系列的每个器件在输出端都有一个小型…

14届蓝桥杯Python总结

在比赛的时候大家头脑注意力都高度集中&#xff0c;比较紧绷&#xff0c; 我是不喜欢太紧绷的神经的&#xff0c;这时候电脑就夸得一下关机重启了&#xff0c;我当时真的想说关的好&#xff0c;休息一会&#xff08;哈哈哈&#xff09; 重启后我就继续做题&#xff0c;虽然出了…

AcWing 第一讲 打卡例题习题题目

AcWing 第一讲 打卡&例题&习题题目 1. AcWing 1. A B #include<iostream>using namespace std;int main(){int a,b;cin >> a >> b;cout << ab << endl;return 0; }2. AcWing 608. 差 #include<iostream>using namespace std;int…

他98年的,我真的玩不过他...

现在的小年轻真的卷得过分了。前段时间我们公司来了个98年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条…

ChatGPT做爬虫的第一步

做爬虫就是搞数据, 专业的人做专业的事, ChatGPT阅虫无数, 搞个小爬虫, So Easy! 我知道可以百度到下载图片的代码, 但是我不想百度了, 一切交给ChatGPT 你只需要问他: 怎么用Nodejs下载图片? 其中&#xff0c;url是图片的地址&#xff0c;filePath是保存图片的本地路径。使…

安装stable-diffusion时遇到卡的情况

安装过程中&#xff0c;假如出现Installing gfpgan并且卡了很久不动&#xff0c;见下图&#xff1a; 遇到这个情况&#xff0c;怎么解决呢&#xff1f; 去TencentARC/GFPGAN官网&#xff0c;点击绿色的“Code”按钮&#xff0c;然后点击“Download ZIP”按钮&#xff1a; 将下…

MySQL--数据类型--0409

目录 1.数值类型 1.2 tinyint类型 2.bit类型 3.小数类型 3.1 float 3.2 decimal 4.字符类型 4.1 char 4.2 varchar 4.3 char 和 varchar 比较 5. 日期类型 6. enum 和 set 6.2 set和enum的查找 6.2.1 enum的查找 6.2.2 set的查找 1.数值类型 1.2 tinyint类型 只…

IDE装上ChatGPT,一天开发一个系统

昨天白天在写代码&#xff0c;晚上看了一场直播&#xff0c;是两个技术的直播&#xff1a; 一个是技术总监&#xff0c;一个是号称Java之父的余**。 结果Java之父被技术总监吊打。然后匆匆下播。 技术这玩意&#xff0c;真的就是真的&#xff01; 白天我开发了一个系统&…

二叉搜索树的oj

目录 一、根据二叉树创建字符串 二、二叉树的层序遍历 三、二叉树的层序遍历Ⅱ 四、二叉树的最近公共祖先 ①递归求解 ②回溯求解 五、二叉搜索树和双向链表 六、根据一棵树的前序遍历与中序遍历构造二叉树 七、从中序与后序遍历序列构造二叉树 八、二叉树的任一遍历…

大厂面试-算法优化:冒泡排序你会优化吗?

关注公众号&#xff1a;”奇叔码技术“ 回复&#xff1a;“java面试题大全”或者“java面试题” 即可领取资料 原文&#xff1a;冒泡排序及优化代码 https://blog.csdn.net/weixin_43989347/article/details/122025689原文&#xff1a;十大经典排序算法 https://frxcat.fun/pa…