1、使用vmstat 1 命令查看si so两个swap列,确认没有发生交换,1代表每秒打印一次
2、使用jstat -gcutil pid 1000 查看fgct列,确认regionserver没有发生长时间gc暂停,如果gc时间超过zookeeper的连接最大超时时间则会导致hbase挂掉
hbase中和GC相关的参数:
(默认):
export HBASE_OPTS="$HBASE_OPTS -ea -verbose:gc -Xloggc:$HBASE_LOG_DIR/hbase.gc.log -XX:ErrorFile=$HBASE_LOG_DIR/hs_err_pid.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
修改后:
export HBASE_OPTS="$HBASE_OPTS -verbose:gc -Xloggc:$HBASE_LOG_DIR/hbase.gc.log -XX:ErrorFile=$HBASE_LOG_DIR/hs_err_pid.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=70"
3、使用top命令查看regionserver是否有充足的cpu资源,mapreduce会占用很多cpu,可以减少mapreduce任务数
4、加大zookeeper会话超时时间,编辑hbase-site.xml文件,添加下面的属性
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
5、加大zookeeper会话最大超时时间编辑zoo.cfg 提高MaxSessionTimeout=120000,修改后重启zookeeper。
zookeeper的超时时间不要设置太大,在服务挂掉的情况下,会反映很慢。