记录一次Dump文件分析之旅

news2024/9/9 5:55:44

背景

在生产环境中,服务运行一段时间后,我们遇到了JVM内存使用率超过90%的告警。考虑到我们的服务正常情况下每周都会进行重启,通常不应该出现如此高的内存使用率问题。

前置操作

在检查JVM相关配置时,我们使用Jinfo命令发现当前服务使用的垃圾收集器是Parallel Scavenge。这款垃圾收集器的特点是默认仅在老年代无法成功分配内存时才会执行full GC。为了深入分析问题,我们使用jmap工具导出了一份线程转储文件。

分析过程

1.JProfiler分析

在导出dump文件后,我们首先使用JProfiler对文件进行了分析。值得注意的是,dump文件原始大小为1.88GB,而在JProfiler中实际显示的数据量仅为297MB。这一显著差异表明大部分数据是可以通过Full GC进行回收的。然而,面对这一问题,JProfiler中没有提供进一步深入分析的工具或方法。
在这里插入图片描述
为了更全面地了解问题,我们决定尝试其他工具进行交叉验证。我们发现,虽然JProfiler提供了直观的视图和一些基本的分析功能,但它在处理大规模数据和复杂场景时的局限性变得明显。因此,我们开始探索其他专用的内存分析工具,以期找到能够提供更深入见解的工具。

2.HeapDump网站在线分析

进行线上服务的问题诊断时,使用HeapHeapDump网站进行在线分析可以是一个有效的手段。

  1. 将dump文件上传到网站上
  2. 大对象分析:在结果页面,先查看概况中的大对象信息。如图示例所示,关注那些与Mysql查询相关的大内存占用对象。
    在这里插入图片描述
  3. 包路径检查:利用类视图功能,搜索您自己项目的包路径,检查相关联的对象。这一步是为了发现特定于您服务的内存分布情况。
    异常对象识别:根据图示,识别出有明显异常内存占用的对象。例如,发现某个对象占用了超过200M内存。
    在这里插入图片描述
  4. 业务逻辑审查:根据HeapHeapDump网站提供的信息,回溯相关代码,分析为何该对象会占用如此多的内存。
    数据加载问题:在此案例中,发现该类负责从数据库表中加载数据到内存。由于上线前未准确评估使用量,导致全表的数据被周期性地导入,而表中实际数据量已达40万条记录,这显然是一个过度的内存占用。

总结

在面对生产环境中服务出现的JVM内存使用率超过90%的问题时,我们采取了多种工具和策略来细致地分析dump文件。这一过程不仅帮助我们从多个角度深入问题本质,还使我们能够更有效地识别和解决潜在的问题。

首先,我们推荐使用多种分析工具。这是因为不同的工具有着各自的优势和特色,能够揭示问题的各个方面。例如,JProfiler在识别内存泄漏、问题线程和相关对象方面表现出色。通过JProfiler的分析,我们可以直接观察到那些占据过多内存资源的对象和线程,这为解决问题提供了直接线索。

然而,并非所有的内存问题都能通过一种工具得以完全揭示。有时,JProfiler可能无法发现明显的异常。在这种情况下,其他软件的分析能力就显得尤为重要。我们发现,IntelliJ IDEA等开发工具也提供了强大的分析功能,能够帮助我们查看完整的对象情况,包括那些等待GC回收的对象。这些信息对于理解内存使用模式和发现非明显的内存泄漏至关重要。

此外,我们学到的一个重要教训是,分析dump文件并不仅仅是运行一个工具那么简单。真正的洞察力来自于对工具提供的数据的深入解读,以及将这些数据与应用程序的实际代码和业务逻辑相结合的能力。例如,在本次问题中,通过结合JProfiler和IntelliJ IDEA的分析结果,我们发现了特定类实例的内存使用明显异常。

综上所述,有效分析dump文件需要综合运用多种工具和方法。根据面临的问题类型,选择最合适的工具,同时深入理解分析结果,结合代码和业务逻辑进行综合判断,这样才能更准确地定位和解决问题。

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

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

相关文章

Covalent 启动面向 CXT 质押者的生态伙伴空投计划

Covalent Network(CXT)是模块化人工智能数据基础设施,其宣布了合作伙伴生态系统空投计划的首个项目:TAIKO。此举旨在为 CXT 代币质押者提供来自其庞大生态系统的空投机会。首次空投将于 2024 年 8 月 1 日进行,向 CXT …

疯狂交互学习的BM3推荐算法(论文复现)

疯狂交互学习的BM3推荐算法(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 疯狂交互学习的BM3推荐算法(论文复现)多模态推荐系统优点 示例对比学习什么是对比学习?关键思想优点 自监督学习什么是自监督…

【只出现一次的数字 III】python刷题记录

R2-位运算专题. 目录 哈希表 位运算 ps: 一眼哈希表啊 哈希表 class Solution:def singleNumber(self, nums: List[int]) -> List[int]:dictdefaultdict(int)ret[]for num in nums:dict[num]1for key in dict.keys():if dict[key]1:ret.append(key)return ret怎么用位…

支持AI的好用的编辑器aieditor

一、工具概述 AiEditor 是一个面向 AI 的下一代富文本编辑器,她基于 Web Component,因此支持 Layui、Vue、React、Angular 等几乎任何前端框架。她适配了 PC Web 端和手机端,并提供了 亮色 和 暗色 两个主题。除此之外,她还提供了…

Hive3:库操作常用语句

1、创建库 create database if not exists myhive;2、选择库 use myhive;3、查看当前选择的库 SELECT current_database();4、查看库详细信息 desc database myhive;可以查看数据文件在hdfs集群中的存储位置 5、创建库时制定hdfs的存储位置 create database myhive2 …

机器学习课程学习周报六

机器学习课程学习周报六 文章目录 机器学习课程学习周报六摘要Abstract一、机器学习部分1.1 循环神经网络概述1.2 循环神经网络架构1.2.1 深层循环神经网络1.2.2 Elman网络和Jordan网络1.2.3 双向循环神经网络 1.3 长短期记忆网络1.4 LSTM原理1.5 RNN的学习方式1.6 RNN中的梯度…

基于站点的中国6小时PM2.5数据集(1960-2020)

基于站点的中国6小时PM2.5数据集(1960-2020) 数据介绍 几十年来,PM2.5改变了地球上的辐射平衡,增加了环境和健康风险,但直到2013年才在中国得到广泛监测。历史长期 PM2.5具有高时间分辨率的记录是必不可少的&#xff0…

段页式存储-系统架构师(三十七)

1、一个完整的系统需要从不同的角度进行描述,下图属于软件架构设计中的(),用于()视图来描述软件系统。 问题1 A对象图 B时序图 C构件图 D类图 问题2 A进程 B开发 C物理 D逻辑 解析: 从…

Golang | Leetcode Golang题解之第306题累加数

题目: 题解: func stringAdd(x, y string) string {res : []byte{}carry, cur : 0, 0for x ! "" || y ! "" || carry ! 0 {cur carryif x ! "" {cur int(x[len(x)-1] - 0)x x[:len(x)-1]}if y ! "" {cur i…

卷积神经网络的入门基本介绍 | 带你快速上手各种概念【附图解】

文章目录 1、简介2、核心概念3、关键操作4、常见架构5、训练过程6、重要概念图解⭐6.1、卷积神经网络工作⭐6.2、卷积核6.3、全连接与卷积网络的对比6.4、池化层6.5、感受野和卷积堆叠6.6、神经元计算和激活函数 7、卷积网络可以改进的地方8、结论 🍃作者介绍&#…

清爽简洁!这可能是开源界功能最强大的项目开发管理系统

💂 个人网站: IT知识小屋🤟 版权: 本文由【IT学习日记】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 写在前面项目简介项目特点设计思想技术栈项目展示项目获取 写在前…

(免费领源码)java+SpringBoot+mysql车辆故障报修系统26719-计算机毕业设计项目选题推荐

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,车辆维修行业当然也不例外。车辆故障报修系统是以实际运用为开发背景,运用软件工程原理和开发方法&#xff…

SpringBoot内置Tomcat启动原理

文章目录 概要整体架构流程技术细节 概要 Springboot 内嵌 tomcat是如何启动的 ? 整体架构流程 springboot启动 ---- autoconfiguration ---- tomcat springboot在启动后,通过context 确定是 org.springframework.boot.web.servlet.context.Annotatio…

微软蓝屏事件:全球网络安全与系统稳定性的警示

文章目录 每日一句正能量前言探讨软件更新流程中的风险管理和质量控制机制软件更新的风险风险管理策略质量控制措施测试流程缺陷识别实施质量控制结论 提供预防类似大规模故障的最佳方案或应急响应对策设计冗余系统实施灾难恢复计划建立高可用架构应急响应对策利用自动化工具和…

DRAM的可靠性受什么因素影响

挑战 随着IC尺寸的不断减小,它们变得更容易受到多种环境因素的损害,尤其是对于放置在高温或低温且空气中含有微粒的恶劣环境中的系统。在远程维护受限的室外偏远地区设置的系统特别容易受到攻击。 IC质量不均。晶圆内的IC可能不一定具有相同的质量。一个…

Coggle数据科学 | Kaggle赛题总结:AI数学奥赛挑战赛

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:Kaggle赛题总结:AI数学奥赛挑战赛 赛题名称:AI Mathematical Olympiad - Progress Prize 1 赛题类型:大模型、…

Python开源项目月排行 2024年6月

#2024年6月2024年7月1日1wxPython一个基于C的跨平台GUI工具包wxWidgets的Python封装库。它提供了丰富的GUI组件,如按钮、文本框、菜单、对话框等,使得开发者能够轻松构建功能齐全且用户体验良好的桌面应用。wxPython的设计目标是尽可能地利用操作系统的原…

【中项】系统集成项目管理工程师-第8章 信息安全工程-8.2信息安全系统

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

OAK相机扩展NDVI功能检测植物健康情况

什么是NDVI? 首先,NDVI代表归一化差异植被指数。这听起来很花哨,但这实际上只是衡量植物健康的一种高级方法。NDVI摄像机使用可见光和近红外 (NIR) 光捕获图像。健康的植物反射更多的近红外光并吸收更多的可见光,而生病的植物反射…

spring源码 循环依赖

spring框架两大核心:IOC和AOP IOC(Inverse of Control)控制反转 将对象的创建权交给 Spring 容器去创建,利用了工厂模式将对象交给容器管理,只需要在spring配置文件中配置相应的bean,以及设置相关的属性,让spring容器…