OOM问题排查解决方案、Arthas分析高CPU问题

2023-09-21 20:53:30

一、OOM问题

分析流程:
第一步:进程分析,分析老年代回收次数和消耗时间
第二步:日志分析,找出OOM发生时间的日志来锁定执行方法,对应的机器ip
第三步:找到对应的ip机器查看,进一步分析
第四步:下载的dump,使用mat分析堆内存,找到堆占用率前3,查看堆指向

问题产生:
查看新生代最高1000M,如果大数据量调用,jvm会把产生的大对象分配在新生代,新生代full gc后放到老年代,老年代gc后触发OOM,就会像类似死循环一样,一直full gc了

解决方案:
1、临时方法:

        ① 先进行扩容

        ② 任务先降下来
2、洗数据标签放到单独的服务
3、新生代放大
4、大数据量存储进行报警

二、Arthas分析高CPU问题:
优点:
1、快速定位和修复问题的一站式服务

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

更多推荐

大数据之Hive

Hive入门Hive是FaceBook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张表,并提供类SQL查询功能。结构化数据是指没有表名和列名的数据文件,映射为一张表就是给这个数据添加表名和列名,让开发人员后续实现需求时只需使用类似SQL的代码来查询数据。Hive本质是一个Hadoop客户端,将H

第30章_瑞萨MCU零基础入门系列教程之IRDA红外遥控实验

本教程基于韦东山百问网出的DShanMCU-RA6M5开发板进行编写,需要的同学可以在这里获取:https://item.taobao.com/item.htm?id=728461040949配套资料获取:https://renesas-docs.100ask.net瑞萨MCU零基础入门系列教程汇总:https://b

【Hierarchical Coverage Path Planning in Complex 3D Environments】

HierarchicalCoveragePathPlanninginComplex3DEnvironments复杂三维环境下的分层覆盖路径规划视点采样全局TSP算法分两层,一层高级一层低级:高层算法将环境分离多个子空间,如果给定体积中有大量的结构,则空间会进一步细分。全局TSP问题;低层算法采用简单的采样路径规划,解决

Go语言简介:历史背景、发展现状及语言特性

一、简述Go语言背景和发展1.软件开发的新挑战多核硬件架构超大规模分布式计算集群Web模式导致的前所未有的开发规模和更新速度2.Go的三位创始人RobPikeUnix的早期开发者UTF-8创始人KenThompsonUnix的创始人C语言创始人1983年获图灵奖RobertGriesemerGoogleV8JSEngi

【C++】动态内存管理 ⑤ ( 基础数据类型数组 内存分析 | 类对象 内存分析 | malloc 分配内存 delete 释放 | new 分配内存 free 释放内存 )

文章目录一、基础数据类型数组内存分析1、malloc分配内存delete释放内存2、new分配内存free释放内存二、类对象内存分析1、malloc分配内存delete释放内存2、new分配内存free释放内存博客总结:C语言中使用malloc分配的内存,使用free进行释放;C++语言中推荐使用new分配的内存,使用

【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执

【测试开发】基础篇文章目录【测试开发】基础篇1.软件测试生命周期1.1软件生命周期1.2软件测试生命周期2.描述bug3.如何定义bug的级别3.1为什么要对bug进行级别划分3.2bug的一些常见级别4.bug的生命周期5.产生争执这么怎么办(处理人际关系)6.如何开始第一次测试7.测试的执行和bug管理8.如何发现

使用JAXB将xml转成Java对象

文章目录使用JAXB将xml转成Java对象1.xml内容2.Java对象类3.封装的工具类4.测试使用JAXB将xml转成Java对象工作中遇到个问题,需要将xml转对象,之前复杂的xml都是自己用dom4j来解析组装成Java对象,但是对于简单的,看到了JAXB处理的这种方式,就整理下,写成个工具类。1.xml内容

Linux系统编程——线程的学习

学习参考博文:Linux多线程编程初探Linux系统编程学习相关博文Linux系统编程——文件编程的学习Linux系统编程——进程的学习Linux系统编程——进程间通信的学习Linux系统编程——网络编程的学习Linux系统编程——线程的学习一、概述1.进程与线程的区别2.使用线程的理由3.互斥量4.条件变量二、线程A

武汉凯迪正大—继保校验仪的产品特点

一、武汉凯迪正大继保仪的产品特点有哪些?1、经典的WindowsXP操作界面,人机界面友好,操作简便快捷,为了方便用户使用,定义了大量键盘快捷键,使得操作“一键到位”2、高性能的嵌入式工业控制计算机和8.4〞大屏幕高分辨力彩色TFT液晶显示屏,可以提供丰富直观的信息,包括设备当前的工作状态、下一步工作提示及各种帮助信息

【AI视野·今日NLP 自然语言处理论文速览 第三十五期】Mon, 18 Sep 2023

AI视野·今日CS.NLP自然语言处理论文速览Mon,18Sep2023Totally51papers👉上期速览✈更多精彩请移步主页DailyComputationandLanguagePapers"MergeConflicts!"ExploringtheImpactsofExternalDistractorstoP

小白带你学习ceph分布式存储

目录一、概述1、分布式存储系统2、特点2、1统一存储2、2高扩展性2、3可靠性强2、4高性能二、组件1.Monitor2.OSD3.MDS4.Object5.PG6.RADOS7.Libradio8.CRUSH9.RBD10.RGW11.CephFS三、架构图1、文件上传2、文件存储前四、部署1、环境拓扑2、准备工作3

热文推荐