视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
内存回收与hbase
2020-11-09 07:33:24 责编:小采
文档


1.3.1.1 内存回收导致的程序卡顿 Todd Lipcon 描述了2种常见的导致hbase卡顿的内存回收情况,尤其在加载数据到hbase的情况下。这两种情况分别是:cms内存回收失败、老年代堆内存碎片严重。 对于第一种情况,可以在启动cms的时候加入参数- XX:CMSInitiatingOc

1.3.1.1 内存回收导致的程序卡顿

Todd Lipcon 描述了2种常见的导致hbase卡顿的“内存回收情况”,尤其在加载数据到hbase的情况下。这两种情况分别是:cms内存回收失败、老年代堆内存碎片严重。

对于第一种情况,可以在启动cms的时候加入参数-XX:CMSInitiatingOccupancyFraction,将该参数调小为60~70,即当对老年代堆内存使用到60~70时进行cms内存回收,提升内存回收频率。

对于第二种情况,Todd提到一种措施,设置参数 hbase.hregion.memstore.mslab.enabled为true,为每一个memstore开辟一个单独的缓存空间。隐患:mslab(A memstore-local allocation buffer)的开启会导致每个store产生至少一个2MB的buffer。也就是说如果每台机器有2000个store,默认直接会占用至少4G的内存空间,当4G写满了将占用8G。因此对于store非常多的应用有可能会发生OOM,需要谨慎。

个人建议

1、hbase默认内存为1G,最好放大 2、使用cms回收,

export SERVER_GC_OPTS="-XX:CMSInitiatingOccupancyFraction=80 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC"

下载本文
显示全文
专题