HBase源码分析之远程调试

远程调试是JDWP提供的,通过Agent Library的形式加载到JVM中,所以与编译无关,只要运行Java程序时加入调试参数即可。

我们通过IDE来创建调试配置,以Intellij IDEA为例,选择Edit Configurations,添加Remote,就可以看到IDE提供的调试参数,把它加到Java的运行参数里就可以了。


在运行脚本start-hbase.sh时,实际执行在bin/hbase文件中。修改bin/hbase文件,把调试参数加进去,只要在最终执行java之前加入就行,为了方便查找,我加在了最后一段之前。调试时如果配置了两个进程都开启调试,会导致抢占同一个端口,可以一次只调试一个进程或者修改端口号来避免冲突。

...

####################################################################
# masa's remote debugger
####################################################################
REMOTE_DEBUGGER="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5005"
# 调试Master
# if [ "$COMMAND" = "master" ] ; then
#   if [ "$1" != "stop" ] && [ "$1" != "clear" ] ; then
#     HBASE_OPTS="$HBASE_OPTS $REMOTE_DEBUGGER"
#   fi
# fi
# 调试RegionServer
 if [ "$COMMAND" = "regionserver" ] ; then
  if [ "$1" != "stop" ] ; then
    HBASE_OPTS="$HBASE_OPTS $REMOTE_DEBUGGER"
  fi
 fi
################################# END ##############################

HEAP_SETTINGS="$JAVA_HEAP_MAX $JAVA_OFFHEAP_MAX"
# Exec unless HBASE_NOEXEC is set.
export CLASSPATH
if [ "${HBASE_NOEXEC}" != "" ]; then
  "$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "$@"
else
  exec "$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "$@"
fi

这时运行start-hbase.sh,IDE中运行Debug,就可以断点到了。

调试HBase时,还需要将zookeeper.session.timeout、hbase.zookeeper.property.tickTime、hbase.rpc.timeout、hbase.client.operation.timeout、hbase.client.scanner.timeout.period等参数时间设的长一些,以免因为调试时间过长导致连接超时断开、Server关闭等问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值