大資料元件教程-HBase調優-JVM最佳化

Java垃圾回收演算法

標記-清除演算法

複製演算法

標記-整理演算法

分代收集演算法

Java垃圾收集器

1。Serial收集器

2。ParNew收集器

3。並行收集器

4。SerialOld 收集器

5。Parallel Old收集器

6。CMS收集器

7。G1收集器

JVM引數設定

1。堆記憶體大小引數

-Xmx:最大堆大小 物理記憶體的1/4 預設空餘堆記憶體大於70%,JVM較少-Xms限制-Xms:初始堆大小 物理記憶體的1/64 預設空餘堆記憶體小於40%,JVM增大直到-Xmx的最大限制-Xmn:新生代大小 eden+2*survivor空間-Xss:每個執行緒的堆疊大小 減小這個值能生成更多的執行緒-XX:MaxPermSize 設定老年代最大值 物理記憶體的1/4

The maximum amount of heap to use。 Default is left to JVM default。

export HBASE_HEAPSIZE=1G

指定堆記憶體大小,一般不超過實際物理記憶體的1/2

2。CMS相關引數

1。 -XX:+UseConcMarkSweepGC 使用CMS 垃圾收集器2。-XX:+UseParNewGC 新生代採用並行GC策略3。-XX:CMSFullGCsBeforeCompaction 多少次FullGC後進行記憶體壓縮4。-XX:+CMSParallelRemarkEnabled 降低標記停頓5。-XX:UseCMSCompactAtFullCollection 在FullGC的時候,對老年代的壓縮6。-XX:+UseCMSInitiatingOccupancyOnly 使用手動定義初始化定義開始CMS收集7。-XX:CMSInitiatingOccupancyFraction 使用CMS作為垃圾收集,使用N%後開始8。-XX:CMSInitiatingPermOccupancyFraction 設定PermGen使用到達多少比率時觸發9。-XX:CMSIncrementalMode 設定為增量模式 用於單CPU的情況

在hbase-env。sh檔案中設定

# Extra Java runtime options。# Below are what we set by default。 May only work with SUN JVM。# For more on why as well as other possible settings,# see http://hbase。apache。org/book。html#performanceexport HBASE_OPTS=“$HBASE_OPTS -XX:+UseConcMarkSweepGC”

3。輔助引數

export HBASE_OPTS=“$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails-XX:+PrintGCTimeStamps -Xloggc:${HBASE_HOME}/logs/gc-hbase。log”-verbose:gc:指定輸出虛擬機器中的詳細資訊-XX:+PrintGCDetails:指定輸出格式-XX:+PrintGCTimeStamps:表示輸出GC的時間-XXloggc:指定GC輸出日誌的輸出路徑