Young GC越来越耗时

一次年轻代GC长暂停问题的解决与思考 问题描述 公司某规则引擎系统,在每次发版启动会手动预热,预热完成当流量切进来之后会偶发的出现一次长达1-2秒的年轻代GC(流量并不大,并且LB下的每一台服务都会出现该情况) 在这次长暂停之后,每一次的年轻代GC暂停时间又都恢复在20-100ms以内 2s虽然看起来不长,但是对比规则引擎每次10ms左右的响应时间来说,还是不可以接受的;并且由于该规则引擎响应超时,还会导致出单超时失败 问题分析 在分析该系统GC日志后发现,2s暂停发生在Young GC阶段,而且每次发生长暂停的Young GC都会伴 阅读详情
  • 前提:服务用的是CMS垃圾收集器         
  • 现象 :当每次CMS GC后 YoungGc会变正常,但是后面越来越慢
  • 可能的原因  (1)StringTable太大    (2)存在老生代到新生代的引用
  • 对于第一种情况定位
    83245.952: [GC (CMS Initial Mark) [1 CMS-initial-mark: 1619782K(2023424K)] 1686491K(2722496K), 0.0077340 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
    83245.960: Total time for which application threads were stopped: 0.0094512 seconds, Stopping threads took: 0.0000811 seconds
    83245.960: [CMS-concurrent-mark-start]
    83246.101: [CMS-concurrent-mark: 0.140/0.140 secs] [Times: user=0.16 sys=0.00, real=0.14 secs]
    83246.101: [CMS-concurrent-preclean-start]
    83246.106: [CMS-concurrent-preclean: 0.005/0.005 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
    83246.106: [CMS-concurrent-abortable-preclean-start]
    83249.717: [CMS-concurrent-abortable-preclean: 3.609/3.611 secs] [Times: user=3.89 sys=0.04, real=3.61 secs]
    83249.719: [GC (CMS Final Remark) [YG occupancy: 248182 K (699072 K)]83249.719: [Rescan (parallel) , 0.0364698 secs]83249.755: [weak refs processing, 0.0005544 secs]83249.756: [class unloading, 0.0361213 secs]83249.792: [scrub symbol table, 0.0085194 secs]83249.800: [scrub string table, 0.0014245 secs][1 CMS-remark: 1619782K(2023424K)] 1867964K(2722496K), 0.0989427 secs] [Times: user=0.21 sys=0.00, real=0.10 secs]
    83249.818: Total time for which application threads were stopped: 0.1008135 seconds, Stopping threads took: 0.0001093 seconds
    83249.818: [CMS-concurrent-sweep-start]
    83250.378: [CMS-concurrent-sweep: 0.560/0.560 secs] [Times: user=0.61 sys=0.00, real=0.56 secs]
    83250.379: [CMS-concurrent-reset-start]
    83250.383: [CMS-concurrent-reset: 0.004/0.004 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
    
    jvm日志中scrub string table, 0.0014245 secs   如果耗时比较长的话,就代表StringTable太大
    
    
    
    fastjson和jackson来把Stirng对象返序列化成类

     

  •  如果老年代引用年轻代太多的话,会降低YoungGc的速度

 

一次线上JVM Young GC调优完美成功经验分享 先说一下基本情况,本次是对线上商品服务的JVM优化。商品服务的访问量非常高,单机QPS在3000左右,线上总共部署了15个商品服务节点。JVM堆内存大小是8G,其中给新生代分配了2G,老年代垃圾回收器采用CMS,新生代垃圾回收器是ParNew。 优化前的状况 首先我们使用 jstat 查看了 GC 的情况。又通过查看GC log,分析了GC 的详细状况。 使用 jstat -gcutil ${pid} 1000 每隔一秒打印一次 GC 统计信息。 jstat -gcutil 6689 1000 阅读详情

相关推荐

jvm性能调优实战 - 32一个10万并发的BI系统,如何定位和解决频繁Young GC问题?

文章目录Pre模拟代码的JVM参数设置示例Code如何在windows上执行命令?通过jstat观察程序的运行状态 Pre jvm性能调优实战 - 26一个每秒10万并发的系统如何频繁发生Young GC的 之前我们给大家分析过的一个案例,就是一个BI系统因为负载很高所以触发了非常频繁的Young GC ,再来回顾一遍这个案例 回顾之后,我们接着用代码模拟出这个案例的场景,然后用jstat来分析一下jvm的运行状态,带大家来实战一下jstat命令的使用。 模拟代码的JVM参数设置 接着我们会用一段程序

小工匠 2万+

Young GC的时间超长

1.观察gc日志发现young gc日志很长 2020-01-18T11:01:46.486+0800: 10670069.343: [GC2020-01-18T11:01:54.876+0800: 10670077.733: [ParNew: 1119126K->770K(1258304K), 0.0078630 secs] 3377296K->2258940K(4054528K),...

huiyanshizhen21的博客 1040

Young GC频繁的排查

摘要:YoungGC频繁的排查需要系统性分析,包括监控GC状态(jstat)、日志分析(GCeasy)、代码优化(避免循环创建对象)和JVM参数调整(增大新生代、优化晋升策略)。典型场景如Eden区过小、分配速率高或过早晋升,可通过-Xmn/-XX:NewRatio等参数优化。实战案例显示,合理调参可使YGC频率从200次/分降至5次/分。正常指标应满足YGC频率<5次/分、耗时<50ms。建议优先优化代码,再调整参数,并通过压测验证效果。

猪猪 406

java缓慢增长 瞬间增长 gc_Young GC越来越慢,从40ms逐渐增加到80ms,直到发生CMS GC,Young GC降回40ms,然后又增加,有哪些原因呢?...

线上服务机器,CMS GC大概1天一次,每次CMS GC后,Young GC的性能很好,大概40ms左右,随着运行时间增加,Young GC升到80ms,直到触发CMS GC。查了半天资料,网上说有两种原因:(1)StringTable太大?我没有用-XX:+PrintStringTableStatistics统计StringTable,但查看CMS GC日志,发现scrub string tab...

weixin_36015177的博客 637

基于大模型的恶性胸腔积液全周期预测与诊疗方案研究

本研究基于大模型技术构建了恶性胸腔积液全流程预测与诊疗体系,涵盖术前风险评估、术中方案优化、术后恢复预测及并发症预防。通过整合多源医疗数据,实现了手术风险概率预测(准确率80%)、并发症预警(AUC值0.85)及个性化康复方案制定,显著提升诊疗精准度。研究创新性地将Transformer架构与多模态数据融合,在100例临床验证中显示良好性能,但存在数据样本局限、模型可解释性不足等问题。未来将扩大多中心临床验证,优化算法可解释性,探索与基因检测等技术的结合应用,推动恶性胸腔积液的精准诊疗发展。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1897

点云数据增强及预处理

数据增强: 1. random world flip:沿着x或者y轴,翻转点云 点云的x或者y,要翻转 3d box中心的x或者y,要翻转 3d box的朝向要翻转 point segmentation label,点云的相对顺序没有发生变化 2. random_world_rotation:沿着点云原点,旋转点云 点,x,y,绕z轴旋转 3d box,绕z轴旋转,中心和朝向都要变化 point segmentation label,点云的相对顺序没有发生变化 3. random_world_scaling

huang_victor的博客 4011

Netty17# 实战|Young GC时间过长导致RPC超时

引言前几天一个业务负责的同事找老梁,说每次发布SOA拉入时就有少量报错。报错的集中在RPC设置超时时间比较短的上游服务,比如设置300ms,发布完就好了。我说最近没有发布新版本,应该不是中...

gaoliang1719的专栏 1200

基于Zynq的便携式γ能谱仪设计与实现

数字多道分析器(DMCA)是核辐射能谱测量的核心设备,其本质是将探测器输出的模拟脉冲按幅度数字化分道,构建能量-计数分布曲线,从而支撑放射性核素识别与定量分析。其技术原理依赖高速采样、数字滤波成形、基线恢复与峰值提取等关键信号处理环节,具备高分辨率、优线性度与强抗干扰能力。在环境监测、核安全巡检与野外地质勘探等场景中,对低功耗、小型化、实时性提出严苛要求。本方案采用Xilinx Zynq-7020异构SoC架构,融合FPGA实时数字信号处理与ARM嵌入式控制,实现软硬协同优化,兼顾算法精度与工程落地性,为国

weixin_33173126的博客 190

JVM内存溢出(五)之新生代老年代

也叫新生代,顾名思义,主要是用来存放新生的对象。新生代又细分为 Eden区、SurvivorFrom区、SurvivorTo区。新创建的对象都会被分配到Eden区(如果该对象占用内存非常大,则直接分配到老年代区), 当Eden区内存不够的时候就会触发MinorGC(Survivor满不会引发MinorGC,而是将对象移动到老年代中),在Minor GC开始的时候,对象只会存在于Eden区和Survivor from区,Survivor to区是空的。

ShaoFuQiJie的博客 711

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 559

Mimics 21.0软件学习笔记(一)基本操作

Materialise Mimics 21.0打开工程窗口化Thresholding 二值化Region growing区域增长创建一个3D表示,并显示股骨头从髋臼中区分出来,并单独为股骨头建立3D模型 打开工程 Opening the Project 窗口化 Windowing 二值化 Thresholding 区域增长 Region Growing 建立 3D 表示 Creating a 3D representation 显示 3D 表示 Displaying a 3D representation

qq_35495464的博客 4万+

一次young gc耗时过长优化过程

1 问题源起 上游系统通过公司rpc框架调用我们系统接口超时(默认超时时间为100ms)数量从50次/分突然上涨到2000次/分,在发生变化时间段里我们的系统也没有做过代码变更,但上游系统的调用确发生了变化。由于处于主要链路上,sre同学找过来询问原因,所以开始了问题排查。 2 问题初步定位 排查rpc超时的基本思路是这样的: 1) 服务端处理确实超时 ...

dly41721的博客 1251

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2608

耗时20多秒的young gc,你见过吗?

开门见山↓, 图1 惊讶之余,我们一起探探究竟。 首先要会看gc log,一图胜千言↓ 图2 有个细节很关键,user(用户耗时)+sys(系统耗时) <real(真实耗时)。 再来看下,每个耗时的具体口径↓ 1、real time:GC事件整个过程自然流逝的绝对时间,这个跟钟表上的时间是一致的。(如果GC从10点开始,10点30结束,real ...

达叔 1506

vue引入使用腾讯地图

// 引入鹅厂地图 initMap(lat = 0.0000000, lng = 0.0000000) { // 定义地图中心点坐标- var center = new TMap.LatLng(lat, lng) // 定义map变量,调用 TMap.Map() 构造函数创建地图 map = new TMap.Map(document.getElementById('txMapBox'), { center: center, // 设.

LiangRZ 4536

图机器学习(1)——图论基础

图 (Graph) 是一种描述实体间关系的数学结构,几乎在各个领域都有应用。例如,社交网络就是图,其中用户之间的连接取决于一个用户是否“关注”另一个用户。图论,即对图的研究,一直以来广受关注,包含了大量算法、性质分析方法和数学模型,以解析复杂系统的行为特征。本节将介绍图数据结构的核心概念,通过理论阐述与实例演示相结合的方式,理解基础理论用以实践应用。重点介绍用于创建、操作和研究复杂网络结构与功能的 Python 库。

盼小辉丶的博客 9077

young gc时间缩减

young gc的耗时主要有两个方面 从root对象进行扫描存活的对象 复制存活的对象 从缩短扫描存活对象的方面入手:首先我们先考虑root对象包含哪些 1、所有java线程以及线程栈帧里指向GC堆里的对象的引用 2、JNI Local & Global 3、由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的 4、stack local Java方法的local变量或参数 5、其他,包含monitor & finalizable & n

754

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java 垃圾回收(GC)机制里,Young GC、Old GC、Full GC、Mixed GC

类型回收区域触发条件核心因素典型垃圾回收器支持情况对应用停顿影响(一般情况 )Young GC新生代(Eden + Survivor )新生代空间不足所有回收器(Serial、Parallel、G1 等 )短,相对频繁Old GC老年代老年代空间不足等CMS、Serial Old 等(不同回收器实现 )较长,频率低Full GC全堆(新生代 + 老年代 + 元空间 )老年代/元空间严重不足、显式触发等所有回收器(但应尽量避免触发 )很长,严重影响性能Mixed GC。

weixin_43521001的博客 1420

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

触发Young GC、Full GC的Demo

文章目录1、Young GC1.1、代码1.2、修改参数1.3、运行查看2、Full GC2.1、代码2.2、修改参数2.3、运行查看 1、Young GC 1.1、代码 public class TestYGC { /** 设置参数 -Xms10m 初始化堆内存大小 -Xmx20m 堆最大内存 -Xmn5m 年轻代的大小 -XX:+PrintGCDetails 打印gc明细日志 **/ public static void mai

李杰的博客 677

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一次线上JVM Young GC调优,搞懂了这么多东西!

先说一下基本情况,本次是对线上商品服务的JVM优化。商品服务的访问量非常高,单机QPS在3000左右,线上总共部署了15个商品服务节点。JVM堆内存大小是8G,其中给新生代分配了2G,老...

ftcool的博客 1276

G1GC深度探索--Young gc耗时持续增长原因分析

奇怪现象你是否遇到过服务内部即使设置了线程超时时间,上游依旧报超时异常?你是否遇到过下游服务快速响应,当前服务后续方法无耗时逻辑。但偏偏整体执行耗时极长?你是否遇到过gc耗时规律性增长?却与流量不成比例?你是否遇到过Eden空间突然降低且维持很久?背景那是一个平静的午后,突然的gc耗时告警惊扰了打工人专心编码的心。打开gc监控一看,发现虽然只有单个容器报警,但是大部分gc已经飙升到接近1s了。将报...

gaoliang1719的专栏 2708

一次 Young GC 的优化实践

这个 GC 案例比较有意思,排查问题有点像侦探断案,先分析各种可能性,再按照获得的一个个证据,去排除各种可能性、然后定位原因,最终解决问题。 问题 某同学在微信上问我,有没有办法排查 YoungGC 效率低的问题?听到这话,我也是不知从何说起,就让他说下具体情况。 具体情况是: 有个服务在没有 RPC 调用时,YoungGC 时间大约在 4-5ms,但是有 RPC 调用时,YoungGC ...

勇往直前的专栏 1万+

Young GC 500ms到50ms的优化

问题描述:在进行双十一备战的过程中,发现JVMyoung GC的频次很高,同时一次Young Gc的耗时在500ms左右,FullGC的在1-2天触发一次 JVM原配置:-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+UseCMSInitiatingOccupancyOnly -Dcom.sun.manage...

chenlin597898889的博客 918

如何降低 young gc 时间

基础知识 young gc 主要采用的是copying GC算法;copying GC算法主要有以下两个步骤: Root Scanning Object Copy copying Gc的执行过程大概是从 Gc roots开始扫描其引用,扫描到的就是认为是存活的对象,其他的就是不需要的对象,然后把存放对象进行移动就OK了。 young gc 的耗时也基本上都在这两个步骤上。要想减少一次young gc的时间,必须想办法减少上面两步耗时。 根据官方文档可以知道,GC roots 包

AlbenXie的博客 1826
上一篇: springcloud 服务调用成功几次之后都会失败
下一篇: 分布式日志追踪 子线程丢失traceId的解决方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值