如何定位线上OOM?

文章目录

    • 造成OOM的原因
      • 1.一次性申请的太多
      • 2. 内存资源耗尽未释放
      • 3.本身资源不够
    • 如何快速定位OOM?
      • 1.系统已经OOM了
      • 2.系统运行中还未OOM
        • 2.1导出dump文件:
        • 2.2.结合jvisualvm进行调试
        • 2.3 利用Arthas
          • Arthas可以做什么?
          • 如何使用Arthas
          • 小结

造成OOM的原因

1.一次性申请的太多

更改申请对象数量

2. 内存资源耗尽未释放

找到未释放的对象进行释放

3.本身资源不够

堆内存不足

jmap -heap 查看堆信息

如何快速定位OOM?

1.系统已经OOM了

提前设置OOM后生成一个dump文件(.hprof)
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=
然后用jvisualvm这个工具载入dump文件,选择堆类型
在这里插入图片描述
找到最占资源的对象
在这里插入图片描述
随意点开一个,找到GCROOT
在这里插入图片描述
右键在线程中显示
在这里插入图片描述

2.系统运行中还未OOM

2.1导出dump文件:

jmap -dump:format=b, file=filename.hprof 1660

利用jps可以找到java线程
利用history命令也可以看到对象
jmap -histo:live 24286

2.2.结合jvisualvm进行调试
2.3 利用Arthas
Arthas可以做什么?

1、有没有一个全局JVM运行时监控?CPU,线程,内存,堆栈信息等等
2、CPU飙高,是什么造成的?
3、接口没反应、卡住了,是不是死锁了?
4、CTO说你们这个接口太慢了,要优化一下?如何准确找出耗时的代码
5、我写的代码没有执行,是部署的分支不对,还是我压根没提交?
6、线上有一个低级错误,改起来很简单,能不能在不重启应用的情况下,进行类替换,热部署。

如何使用Arthas

1、运行时监控命令 dashboard
2、全局线程面板````thread 11 3、对代码进行反编译jad thisClass```
4、对方法级别的监控

watch 查看方法的参数、结果、异常
trace 可以查看耗时
stack 查看调用栈

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

在这里插入图片描述

5.生产上CPU飙高的问题处理
利用thread -n 5这个命令可以查看线上前5的线程

6.死锁问题查看

在这里插入图片描述
利用thread -b 也可以实现

7.时空隧道功能
在这里插入图片描述
查看请求信息
在这里插入图片描述
请求回放,可以重复请求
在这里插入图片描述

小结

1、dashboard + thread 命令,基本可以在几秒钟内一键定位问题,找出消耗 CPU 最多的线程和方法栈;
① dashboard 命令用于整体展示进程所有线程、内存、GC 等情况,分析占用CPU 较多的线程
② 使用thread -n查看最放慢的线程在执行的线程栈,找到执行的方法
2、直接 jad 反编译相关代码,来确认根因
3、如果调用入参不明确的话,可以使用 watch 观察方法入参,并根据方法执行时间来过滤慢请求的入参。
4、由于 monitor、trace、watch 等命令是通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此诊断结束要执行 shutdown 来还原类或方法字节码,然后退出 Arthas。

小技巧:可以安装Arthas的idea插件,可以右键快速生成命令

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

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

相关文章

【带头学C++】----- 九、类和对象 ---- 9.13 运算符重载——(9.13.7-9.13.8)

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️创做不易,麻烦点个关注❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️文末有惊喜!献舞一支!❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目录 9.13…

Git篇---第九篇

系列文章目录 文章目录 系列文章目录前言一、使用过git merge和git rebase吗?它们之间有什么区别?二、使用过git cherry-pick,有什么作用?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看…

GPIO模拟MDIO

背景 CPU:AST2500 驱动里实现GPIO模拟MDIO驱动,参考内核驱动mdio-bitbang.c和mdio-gpio.c,当前项目不支持设备树,驱动需要改成platform注册 MDIO介绍 SMI接口 SMI是MAC内核访问PHY寄存器接口,它由两根线组成,双工…

c++ qt 窗口开发中 俩按钮组合 配合 显影 已解决

在日常项目中,有这么需求,还想窗口移动,还想 右侧关闭 还能tab栏点击显影的需求,不得使用 qt模拟点击事件 进行功能优化 特大杯 大杯 控制 窗口显影, 咖啡 按钮 显示窗口 可乐 豆浆 不显示窗口 四个按钮的 互斥关…

Amazon SageMaker机器学习之旅的助推器

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 一、前言 在当今的数字化时代,人工智能和机器学习已经…

2023一起益企广东省中小企业数字化赋能活动(深圳站)成功举办

12月12日,由广东工业和信息化厅指导,广东省中小企业服务中心、深圳市中小企业服务局主办,深圳联通承办的2023年“一起益企”广东省中小企业数字化赋能专项对接志愿服务活动(深圳站)在深圳成功举办。 本次活动涵盖中小企…

【AI底层逻辑】——“数学华尔兹”之一元线性回归

一元线性回归模型想必大家都耳熟能详,这里不再赘述。但在使用python中机器学习包时一定见过类似模型评价参数的输出,这一章我们就讲一讲回归分析里一些模型评价概念! 一、方差分析ANOVA 方差分析是一种用于确定线性回归模型中不同变量对目标…

【改进YOLOv8】车辆测距预警系统:融合空间和通道重建卷积SCConv改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义: 随着交通工具的普及和道路交通的不断增加,车辆安全问题日益凸显。特别是在高速公路等高速道路上,车辆之间的距离和速度差异较…

【论文】 虚拟机 和 Linux容器 的 最新性能比较

虚拟机 和 Linux容器 的 最新性能比较 An Updated Performance Comparison of Virtual Machines and Linux Containers 借助DeepL辅助翻译 校准 摘要 云计算广泛使用虚拟机(VM),因为它们允许工作负载相互隔离,并在一定程度上控…

springboot框架的客制化键盘个性化商城网站

客制化键盘网站是从客制化键盘的各部分统计和分析,在过程中会产生大量的、各种各样的数据。本文以客制化键盘管理为目标,采用B/S模式,以Java为开发语言,Jsp为开发技术、idea Eclipse为开发工具,MySQL为数据管理平台&am…

西南科技大学数字电子技术实验七(4行串行累加器设计及FPGA实现)FPGA部分

一、实验目的 1、掌握基于Verilog语言的diamond工具设计全流程。 2、熟悉、应用Verilog HDL描述数字电路。 3、掌握Verilog HDL的组合和时序逻辑电路的设计方法。 4、掌握“小脚丫”开发板的使用方法。 二、实验原理 三、程序清单(每条语句必须包括注释或在开发…

Leetcode 491 递增子序列

题意理解: 输入:nums [4,6,7,7] 输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]] 这里不止要找一个子序列,还要元素保证其在原来的集合中的前后顺序,且应为增序。 为保证一个增序序列,…

刘家窑中医院王忠主任:心脑血管健康知识的传播者和实践者

为普及心脑血管健康知识,呼吁市民注重心脑血管健康,王忠主任及其科室医护人员举办进社区义诊咨询的活动。王忠主任及多名中医心脑专家和护理人员为社区居民免费进行量血压、测血糖以及健康咨询等义诊活动。 王忠主任用了全身的心血,学习百家吸…

LTC是什么意思?CRM怎样帮助这一流程的实现?

在现代商业环境下,将潜在客户转化成实际销售是公司成功的基石之一。而CRM管理系统是完成LTC的有效工具。本文将向您介绍LTC是什么?公司怎样企业如何通过CRM实现这一流程的? LTC(从线索到现金)是企业运营管理中的一个重…

Python 使用 openpyxl 写表格

当前环境:Win10 x64 MS office 2016 Python3.7 openpyxl3.0.9 1 写入表格 from openpyxl import Workbook# 创建一个 workbook workbook_w Workbook()# 获取被激活的 worksheet worksheet_w workbook_w.active# 1 批量插入数据# 设置一行数据 worksheet_w.ap…

Mo 人工智能教学实训平台年终发布会——发现意外 创造可能

发布会视频回放 –发现意外 创造可能– 在技术迅猛发展的时代里,人工智能教育成为推动社会进步的关键力量,大模型更是各行业的必备技能。为了深度探索教育与人工智能的融合,Mo 人工智能教学实训平台于12月12日举行线上年终发布会&#xff0…

电子烟MOS的选型与要求分析

工作原理: 当用户在吸嘴处抽吸时,气流经过进气孔,穿 过电路板上方的咪头,咪头即产生电信号,驱 动芯片板,让电池供电给雾化芯,雾化芯中的 发热丝将电能转化成热能,当温度达到雾化液 …

K8s中pod詳解

目录 Yaml语法解析 Pod pod是如何被创建的 1.创建一个pod 2.创建一个多容器pod 进入容器 3.配置节点标签 4.Pod容器的交互 4.1创建pod,并做本地解析 4.2pod共享进程 4.3pod共享宿主机namespace 5.钩子函数lifecycle 基础指令 # 查看对应资源: 状态 $ kubectl…

家委会的职责

家委会,起着至关重要的作用。然而,而很多人对家委会的职责并不清楚。 家委会是家长与学校之间的沟通桥梁。家委会成员需要积极与学校沟通,了解学校的各项政策和规定,并及时向家长传达。同时,家委会也需要收集家长的意见…

leetcode算法题:省份数量

leetcode算法题547 链接:https://leetcode.cn/problems/number-of-provinces 题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间…