RegionServer 发生full GC次数

2022-09-01 15:30:23 浏览数 (2)

问题描述及原因:HBase RegionServer 发生full gc,内存不足导致

可能影响:

  • 客户端读写变慢或者超时,RegionServer挂掉

处理建议:

  • 追查请求变慢原因,分场景解决

场景1 RegionServer堆内内存配置太小

在EMR控制台进入“集群服务”,点击“HBase”,点击 配置管理 --> hbase-env.sh --> Heapsize

EMR默认值是1024,即1G,购买集群后需要根据业务调整,一般建议regionserver内存占用机器40%-70%左右

按业务需求和集群规划调整regionserver内存,并在业务低峰期滚动重启rs。

场景2 RS堆内内存较大,读QPS很高

若第一个场景没问题,即regionserver当前内存已经占机器内存很大一部分,并且集群的读QPS远大于写QPS,建议将读缓存存在堆外,在hbase-site.xml中加入以下两个配置项,其中缓存大小需要根据机器剩余内存来配置,一般建议一个节点上所有进程的内存和不超过节点总内存的80%,下图示例中配置的读缓存为16G

代码语言:javascript复制
hbase.bucketcache.ioengine   offheap
hbase.bucketcache.size     16384

业务低峰期滚动重启regionserver

场景3 RS堆内内存较大,写QPS很高

若场景1、场景2都没问题,regionserver依然full gc,同时集群的写QPS较高,可以在hbase-site.xml中加入以下配置项

代码语言:javascript复制
hbase.regionserver.global.memstore.size.lower.limit 0.8

业务低峰期滚动重启rs。该配置项会降低memostore的内存占用,降低flush阈值。

0 人点赞