网易视频云:HBase最佳实践-CMSGC调优

网易视频云:HBase最佳实践-CMSGC调优

ID:47278330

大小:123.71 KB

页数:16页

时间:2019-08-26

网易视频云:HBase最佳实践-CMSGC调优_第1页
网易视频云:HBase最佳实践-CMSGC调优_第2页
网易视频云:HBase最佳实践-CMSGC调优_第3页
网易视频云:HBase最佳实践-CMSGC调优_第4页
网易视频云:HBase最佳实践-CMSGC调优_第5页
资源描述:

《网易视频云:HBase最佳实践-CMSGC调优》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、网易视频云:HBase最佳实践-CMSGC调优网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PaaS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在在线音视频平台。HBase发展到当下,对其进行的各种优化从未停止,而GC优化更是其中的重中之重。从0.94版本提出MemStoreLAB策略、MemstoreChuckPool策略对写缓存Memstore进行优化开始,到0.96

2、版本提岀BucketCache以及堆外内存方案对读缓存BlockCache进行优化,再到后续2.0版本宣称会引入更多堆外内存,可见HBase会将堆外内存的使用作为优化GC的一个战略方向。然而无论引入多少堆外内存,都无法避免读写全路径使用JVM内存,就拿BucketCache中offhe叩模式来讲,即使HBase数据块是缓存在堆外内存的,但是在读取的时候还是会首先将堆外内存中的block加载到JVM内存中,再返回给用户。可见,无论使用多少堆外内存,对JVM内存的使用终究是绕不过去,既然绕不过去,就还是需要落脚于GC本身,对GC

3、本身进行优化。本文就将会介绍HBase应用场景下CMSGC策略的调优技巧,后续还会针对另一业界开始使用的GC策略・G1GC策略在HBase应用场景下进行调优介绍。CMSGC工作原理如果看官已经对CMSGC工作原理比较熟悉,完全可以跳过本节内容,直接进入下节。如果看官还对CMSGC不是很了解,可以参考笔者之前的另一篇文章《HBaseGC的前生今生-身世篇》,文中对JVM的内存结构以及CMSGC进行了相当详细的介绍。为了下文介绍方便,在此还是对其中的一些重要知识点进行提炼:1.整个JVM内存由Young区、Tenured区和Pe

4、rm区三部分组成,其中Young区又分为一个Eden区和两个Survivor区2.整个对象生命周期简要说明(一定要烂熟于心,下文会一直用到):(1)Young区:一个对象初始化之后,首先会进入Eden区,当Eden区满之后会触发一次MinorGC,MinorGC会检查Eden区所有对象是否依旧存活(是否有其他对象引用),如果存活,会将其从Eden区拷贝到Survivor区,并将这些存活对象的age加一,而死亡的对象会被作为垃圾回收。此时Eden区又空闲出来,等新对象填充,填充满之后再会触发MinorGC,如此往复。需要注意的

5、是,每执行一次MinorGC,存活对象的age就会加一。(2)Tenured区:一旦存活对象的age超多一定阈值就会晋升到Tenured区,因此可以理解为Tenured区一般存放长寿对象。很显然,随着时间流逝,Tenured区也会被填充满,此时就会触发CMSGC(oldgc),这种GC相对比较复杂,由5个步骤组成,详见参考文章。3.无论是MinorGC还是CMSGC,都会’Stop-The-Worldr,即停止用户的一切线程,只留下gc线程回收垃圾对象。其中MinorGC的STW时间主要耗费在复制阶段,CMSGC的STW时间

6、主要耗费在标示垃圾对象阶段。GC调优目标上节简单介绍了Java虚拟机的内存结构以及JavaGC的基本知识,接下来会在此基础上介绍HBase集群中GC的几种参数调优技巧。在介绍具体的调优技巧之前,有必要先来看看GC调优的最终目标和基本原则:1.平均MinorGC时间尽可能短。因为整个MinorGC都处于STW,因此短时间MinorGC会使用户读写更加平稳,延迟可控。2.CMSGC次数越少越好。时间越短越好。一方面是因为一次CMSGC—般都会引起至少秒级的应用暂停,对用户读写影响较大;另一方面频繁的CMSGC会产生大量的内存碎片

7、,严重的时候会引起FullGC,导致RegionServer宕机。下面对参数的调优技巧都谨遵以上原则,尤其对于HBase这类延迟敏感性项目而言,在尽量避免严重影响用户读写的情况下使得GC更加平稳、暂停时间更短!CMSGC优化技巧本节会针对HBase这一应用场景对JVM的各种GC参数进行分析,主要分三个阶段进行。第一阶段会介绍适用于所有场景下的GC参数配置,这些参数不需要太多解释读者就可以轻松理解;第二阶段和第三阶段分别就两组参数进行调优讲解,这两组参数一般会根据不同的应用场景进行设置才能使得GC效果最好,鉴于这两组参数的复杂

8、性,我们会通过理论+实验的方式——进行说明;阶段一:默认推荐配置在介绍具体的调优技巧之前,先来看看CMSGC涉及到的所有相关参数及其对应的意义,卜面是最常见的参数:-Xmx-Xms-Xmn-Xss-XX:MaxPermSize=M-XX:+SurvivorRatio=S-XX:+UseCo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。