hbase gc调优(CMS与G1)参数

本文详述了HBase中垃圾收集器CMS与G1的调优实践,旨在减少Full GC次数和时间,提升系统响应速度。CMS包含初始标记、并发标记等阶段,而G1采用了初始标记、并发标记等更优化的策略,两者都有其特有的参数设置与失效模式,调优时需关注如CMSInitiatingOccupancyFraction、MaxGCPauseMillis等关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hbase gc调优(CMS与G1)

一:hbase gc调优目的:

在HBase中,有两个在内存中的结构消费了绝大多数的heap空间。BlockCache缓存读操作的HFileblock,Memstore缓存近期的写操作,基于HBase是一个响应时间敏感,并且需要对GC时间可控的应用的出发点。

二:hbase的gc调优本文通过CMS与g1两种算法进行设置参考。

需要大致了解两种垃圾收集器的概念及不同

三:几个基本概念:

  1. Full GC == Major GC指的是对老年代/永久代的stop the world的GC
  2. Full GC的次数 = 老年代GC时 stop the world的次数
  3. Full GC的时间 = 老年代GC时 stop the world的总时间
  4. CMS 不等于Full GC,我们可以看到CMS分为多个阶段,只有stop the world的阶段被计算到了Full GC的次数和时间,而和业务线程并发的GC的次数和时间则不被认为是Full GC
  5. Full GC本身不会先进行Minor GC,我们可以配置,让Full GC之前先进行一次Minor GC,因为老年代很多对象都会引用到新生代的对象,先进行一次Minor GC可以提高老年代GC的速度。比如老年代使用CMS时,设置CMSScavengeBeforeRemark优化,让CMS remark之前先进行一次Minor GC。

四:CMS调优:

1.CMS收集器在老年代内存回收中执行的阶段说明:

(1) 初始标记 (Initial Mark) (Stop the World Event,所有应用线程暂停):在老年代(old generation)中的对象, 如果从年轻代(young generation)中能访问到, 则被 “标记,marked” 为可达的(reachable).对象在旧一代“标志”可以包括这些对象可能可以从年轻一代。暂停时间一般持续时间较短,相对小的收集暂停时间.

(2) 并发标记 (Concurrent Marking):在Java应用程序线程运行的同时遍历老年代(tenured generation)的可达对象图。扫描从被标记的对象开始,直到遍历完从root可达的所有对象. 调整器(mutators)在并发阶段的2、3、5阶段执行,在这些阶段中新分配的所有对象(包括被提升的对象)都立刻标记为存活状态.

(3) 再次标记(Remark):(Stop the World Event, 所有应用线程暂停) 查找在并发标记阶段漏过的对象,这些对象是在并发收集器完成对象跟踪之后由应用线程更新的.

(4) 并发清理(Concurrent Sweep):回收在标记阶段(marking

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奈文摩尔ST

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值