背景:cdh5.15.1 redhat7.3
habse的Resigion Server總是飄紅,在cm的管理端界面爆出GC異常,隨即Regision Server宕機。
最開始這種現象偶爾存在,調整habse Regision 的內存參數后可以緩解:
增大參數:
HBase RegionServer 的 Java 堆棧大小(字節)
后來這個問題越來月嚴重,啟動后不久就會自動宕掉,經過hbase老司機指點,修改了參數:HBase RegionServer 的 Java 配置選項
原參數
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
修改后
-Xmx16g -Xms8g -Xmn2g -Xss256k -XX:MaxPermSize=384m -XX:SurvivorRatio=6 -XX:+UseParNewGC -XX:ParallelGCThreads=10
-XX:+UseConcMarkSweepGC -XX:ParallelCMSThreads=16 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70 -XX:CMSMaxAbortablePrecleanTime=500 -XX:CMSFullGCsBeforeCompaction=5 -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError
解析:
-Xmx:分配給JVM的最大堆內存
-Xms:分配給JVM的初始內存,此值一般和Xmx設置相同
-Xmn:分配給young區內存大小,此值的設置對系統性能影響很大,后面第二階段將會重點討論此值的參數的調優
-Xss:分配給每個線程的堆棧大小,在一些對線程數敏感的系統中該值設置比較重要,一般設置為256K~1M左右
-XX:MaxPermSize= M :分配給持久代的內存大小
-XX:SurvivorRatio=S : 表示young區中eden區和survivor區的內存大小比例,默認為8 該值的設置對系統性能影響很大,第三階段會重點討論該參數的調優
-XX:+UseConcMarkSweepGC :表示回收器使用CMS CG策略
-XX:+UseParNewGC :表示young區采用並行回收機制 推薦使用 &&&&&
-XX:+CMSParallelRemarkEnabled : 表示cms的remark階段采用並行的方式,推薦使用 &&&&&
-XX:MaxTenuringThreshold=N : 表示young區對象晉升到Tenured區的閾值,該值的設置對系統的影響很大,在第三節點會重點討論*****
-XX:+UseCMSCompactAtFullCollection :表示每次執行完cms gc之后執行一次碎片整合 推薦使用 &&&&&
-XX:+UseCMSInitiatingOccupancyOnly :表示cms gc只基於參數CMSInitiatingOccupancyFraction觸發
-Xx:CMSInitiatingOccupancyFraction : 表示當tenured(老年代)區內存使用量超過tenured總大小的百分比超過該閾值之后會觸發cms gc,該值一般設置為70%~80%
-XX:-DisableExplicitGC : 表示禁止使用命令System.gc() 該命令用於觸發整個JVM的垃圾回收,一般都是長時間full gc 推薦使用 &&&&&
-XX:+PrintTenuringDistribution才能打印對應日志,強烈建議線上集群開啟該參數,
待續。。。。。。