时间压测过程中,通过程序加时间戳判断,在批量查询hbase的时候,会有部分数据查询时间大于8s,这肯定是不能接受的,查看hbase的日志发现原因,有类似日志'GC pool',推测是GC问题,各种查询资料:
...
2018-03-01 17:32:16,243 WARN org.apache.hadoop.hbase.util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 16100ms
GC pool 'ParNew' had collection(s): count=1 time=0ms
GC pool 'ConcurrentMarkSweep' had collection(s): count=1 time=8791ms...........
解决:
参考<<Hbase不睡觉>>这本书JVM GC调优解决,在配置文件下面设置GC策略,增大内存,解决了此问题。
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=512m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=256m -XX:MaxPerm