记录一次线上fullgc问题排查过程

某天,接到测试部门反馈说线上项目突然很快,由于当前版本代码和上一版本相比就多了一个刚上线了一个5分钟1次的跑批任务,先关闭次任务后观察是否卡顿,并检查堆内存是否使用完造成频繁gc

1.通过jmap命令查看堆内存中的对象

2.生成当前堆快照文件并用mat工具打开(file->HeapDump)

导出命令如下:

 ./jmap -dump:format=b,file=heap.dump 3920149

发现是有一个任务线程创建了最多的对象,调整对应配置如下核心线程从1个改5个线程

3.查看堆内存设置情况:

 ./jhsdb jmap --heap --pid  7853

返回说明:

  1. MinHeapFreeRatio:最小堆空闲比例,表示堆中空闲空间的最小比例。默认值为40,表示堆中至少有40%的空间是空闲的。

  2. MaxHeapFreeRatio:最大堆空闲比例,表示堆中空闲空间的最大比例。默认值为70,表示堆中最多可以有70%的空间是空闲的。

  3. MaxHeapSize:最大堆大小,表示堆的最大可用空间。

  4. NewSize:新生代大小,表示新生代的初始大小。

  5. MaxNewSize:最大新生代大小,表示新生代的最大可用空间。

  6. OldSize:老年代大小,表示老年代的初始大小。

  7. NewRatio:新生代与老年代的比例,表示新生代与老年代的大小比例默认为2。

  8. SurvivorRatio:幸存者区与Eden区的比例,表示幸存者区与Eden区的大小比例。默认值为8,表示幸存者区的大小是Eden区大小的1/8。

  9. MetaspaceSize:元数据区大小,表示元数据区的初始大小。

  10. CompressedClassSpaceSize:压缩类空间大小,表示压缩类空间的初始大小。

  11. MaxMetaspaceSize:最大元数据区大小,表示元数据区的最大可用空间。

  12. G1HeapRegionSize:G1堆区域大小,表示G1堆区域的大小

堆分为新生代和老年代 默认占比 1:2, 可以看到老年代占用使用过高,调整其大小,调整为3 使用参数为:

-XX:NewRatio=3

新生代分为eden区、From Survivor(S0区)、To Survivor(S1区) 默认占比8:1:1,,可以看的s区100%,调整为6

-XX:SurvivorRatio=6

其他调整为:

 -Xmx8192M 最大堆内存调整为8192M
-XX:MetaspaceSize=256M 设置元数据区初始值256M
-XX:MaxMetaspaceSize=512M 设置元数据区最大值256M
-XX:MaxDirectMemorySize=256M 设置堆外内存256M
-XX:PretenureSizeThreshold=11457280 设置对象超过11457280 字节直接进入老年代
-XX:MaxTenuringThreshold=15 设置垃圾最大年龄15 超过这个就进入老年代
-XX:+HeapDumpOnOutOfMemoryError 打印OOM
-XX:HeapDumpPath=./logs/dump.hprof dump文件

4.调整后重启观察gc情况发现明显好转从600多次fgc到12次fgc,而且12次均为启动时就触发

./jstat -gcutil 7853 5000 5

返回说明:

  • S0:Survivor 0区的使用率,表示Survivor 0区已使用的百分比。
  • S1:Survivor 1区的使用率,表示Survivor 1区已使用的百分比。
  • E:Eden区的使用率,表示Eden区已使用的百分比。
  • O:老年代的使用率,表示老年代已使用的百分比。
  • M:元数据区的使用率,表示元数据区已使用的百分比。
  • CCS:压缩类空间的使用率,表示压缩类空间已使用的百分比。
  • YGC:Young Generation垃圾回收的次数,表示Young Generation垃圾回收的次数。
  • YGCT:Young Generation垃圾回收的总时间,表示Young Generation垃圾回收的总时间。
  • FGC:Full GC的次数,表示Full GC的次数。
  • FGCT:Full GC的总时间,表示Full GC的总时间。
  • CGC:Concurrent Mode Failure的次数,表示Concurrent Mode Failure的次数。
  • CGCT:Concurrent Mode Failure的总时间,表示Concurrent Mode Failure的总时间。
  • GCT:垃圾回收的总时间,表示垃圾回收的总时间。

参数解析

5.打印gc.log定位增加参数

 -XX:+PrintGCDetails  -Xloggc:./logs/gc.log

发现如下日志:

6.定位system.gc的具体位置

下载 https://arthas.aliyun.com/arthas-boot.jar

启动后选择本地项目如下:

访问arthas 的web界面

可以发现是由于项目中引入领英的paldb的问题要如何解决呢?

方法1:

-XX:+DisableExplicitGC

该参数将使JVM完全忽略系统的GC调用(不管使用的收集器是什么类型),国产欧拉系统设置了不生效,cenos机器设置正常

方法2:

-XX:+ExplicitGCInvokesConcurrent

该参数启用后JVM无论什么时候调用系统GC,都执行CMS GC,而不是Full GC。

7.再次观察gc

至此卡顿问题解决!

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

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

相关文章

许战海战略文库|无增长则衰亡:中小型制造企业增长困境

竞争环境不是匀速变化,而是加速变化。企业的衰退与进化、兴衰更迭在不断发生,这成为一种不可避免的现实。事实上,在产业链竞争中增长困境不分企业大小,而是一种普遍存在的问题,许多收入在1亿至10亿美元间的制造企业也同…

PlantUML 绘图

官网 https://plantuml.com/zh/ 示例 绘制时序图 USB 枚举过程 PlantUML 源码 startuml host <-- device : device insert host note right : step 1 host -> device : get speed, reset, speed check note right : step 2 host -> device …

Premiere Elements 2024(PR简化版)直装版

Adobe Premiere Elements 2024 是一款由Adobe Systems推出的视频编辑软件&#xff0c;它结合了易用性和专业级的功能&#xff0c;帮助用户对视频进行剪辑、特效、色彩校正等处理。 主要功能和特点&#xff1a; 导入和组织视频&#xff1a;Premiere Elements 2024允许用户快速导…

ESP8266 WiFi物联网智能插座—下位机软件实现

目录 1、软件架构 2、开发环境 3、软件功能 4、程序设计 4.1、初始化 4.2、主循环状态机 4.3、初始化模式 4.4、配置模式 4.5、运行模式 4.6、重启模式 4.7、升级模式 5、程序功能特点 5.1、日志管理 5.2、数据缓存队列 本篇博文开始讲解下位机插座节点的MCU软件…

虚拟机软件Parallels Desktop 19 mac功能介绍

Parallels Desktop 19 mac是一款虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 PD19虚拟机软件具有快速启动和关闭虚拟机的能力&#xff0c;让…

Kelper.js 笔记 python交互

1 加载Kepler 地图 KeplerGl() 1.1 主要参数 height 可选 默认值&#xff1a;400 地图显示的高度 data 数据集 字典&#xff0c;键是数据集的名称 config地图配置字典 1.2 举例 from keplergl import KeplerGlmap_KeplerGl() map_ 默认的位置 1.3 添加自己的图 1.3.1 读…

ElementPlus Switch 开关基础使用

昨天开发用到开关组件 后台返回字段是 can_write 默认是0 or 1 但是Switch 组件绑定的默认值默认是 true or false 直接绑定会导致默认是关闭状态 在页面一加载 值发生变化时 会自己调用 查了文档 需要使用 active-value 和 inactive-value 来指定绑定的数据类型 …

23种经典设计模式:单例模式篇(C++)

前言&#xff1a; 博主将从此篇单例模式开始逐一分享23种经典设计模式&#xff0c;并结合C为大家展示实际应用。内容将持续更新&#xff0c;希望大家持续关注与支持。 什么是单例模式&#xff1f; 单例模式是设计模式的一种&#xff08;属于创建型模式 (Creational Pa…

网页游戏的开发流程

网页游戏的开发流程可以根据项目的规模和复杂性而有所不同&#xff0c;但通常包括以下一般步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.需求分析&#xff1a; 确定游戏的概念、目标受众和核…

手写 分页

子组件&#xff1a;TimePage.vue 效果图 <template><div class"click-scroll-X"><!-- 上 --><!-- eslint-disable-next-line --><span class"left_btn" :disabled"pageNo 1" click"leftSlide"><&…

PanoFlow:学习360°用于周围时间理解的光流

1.摘要&#xff1a; 光流估计是自动驾驶和机器人系统中的一项基本任务&#xff0c;它能够在时间上解释交通场景。自动驾驶汽车显然受益于360提供的超宽视野&#xff08;FoV&#xff09;◦ 全景传感器。 然而&#xff0c;由于全景相机独特的成像过程&#xff0c;为针孔图像设计…

NSIC2050JBT3G 车规级120V 50mA ±15% 用于LED照明的线性恒流调节器(CCR) 增强汽车安全

随着汽车行业的巨大变革&#xff0c;高品质的汽车氛围灯效、仪表盘等LED指示灯效已成为汽车内饰设计中不可或缺的元素。深力科安森美LED驱动芯片系列赋能智能座舱灯效充满艺术感和科技感——NSIC2050JBT3G LED驱动芯片&#xff0c;实现对每路LED亮度和颜色进行细腻控制&#xf…

SLAM从入门到精通(launch文件学习)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大家应该还记得我们在一开始学习ros的时候&#xff0c;如果需要启动一个节点的话&#xff0c;需要首先打开roscore&#xff0c;接着用rosrun打开对…

shiro550复现环境搭建

前言 Shiro反序列化漏洞指的是Apache Shiro安全框架中的一个潜在漏洞&#xff0c;该漏洞可能导致攻击者能够通过精心构造的恶意序列化对象来执行任意代码或进行拒绝服务&#xff08;DoS&#xff09;攻击。 这种漏洞的根源是在Shiro的RememberMe功能中&#xff0c;当用户选择“…

制造业单项冠军(国家级、广东省、深圳市)奖励政策及申报对比

制造业单项冠军的头衔含金量极高&#xff0c;是某一细分领域的“领头雁”。下面深科信对“制造业单项冠军”&#xff08;国家级、广东省级、深圳市级&#xff09;的认定标准、奖励政策进行梳理 。 2023年9月25日&#xff0c;工信部办公厅正式发布《关于开展2023年制造业单项冠军…

【TensorFlow2 之012】TF2.0 中的 TF 迁移学习

#012 TensorFlow 2.0 中的 TF 迁移学习 一、说明 在这篇文章中&#xff0c;我们将展示如何在不从头开始构建计算机视觉模型的情况下构建它。迁移学习背后的想法是&#xff0c;在大型数据集上训练的神经网络可以将其知识应用于以前从未见过的数据集。也就是说&#xff0c;为什么…

linux 安装mysql

1、下载mysql安装包 2、创建mysql文件夹 mkdir /usr/local/mysql 3、解压mysql安装包&#xff0c;并将解压出来的文件夹下面的内容全部移动到/usr/local/mysql下 解压 tar zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 移动 mv /usr/local/src/mysql-5.7.39-linux-gl…

Unity设计模式——装饰模式

装饰模式&#xff08;Decorator&#xff09;&#xff0c;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活。 Component类&#xff1a; abstract class Component : MonoBehaviour {public abstract void Operation(); …

华为认证 | HCIP-Datacom,这门认证正式发布新版本!

华为认证数通高级工程师HCIP-Datacom-Campus Network Planning and Deployment V1.5&#xff08;中文版&#xff09;自2023年9月28日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司…

互联网性能和可用性优化CDN和DNS

当涉及到互联网性能和可用性优化时&#xff0c;DNS&#xff08;Domain Name System&#xff09;和CDN&#xff08;Content Delivery Network&#xff09;是两个至关重要的元素。它们各自发挥着关键作用&#xff0c;以确保用户能够快速、可靠地访问网站和应用程序。在本文中&…