phoenix4.9 在hbase进行compaction后出现zookeeper连接泄漏问题

在使用Phoenix 4.9与HBase交互时,遇到RegionServer的Zookeeper连接泄漏问题。分析发现,compaction过程中,Phoenix的DefaultStatisticsCollector类在初始化时创建了未释放的Zookeeper连接。此问题在4.10.0版本已修复,解决方案是确保在完成操作后调用HTableInterface的close()方法来关闭连接,而非直接关闭ZookeeperKeepAliveConnection,以防连接未真正释放。在分区多的情况下,此问题更容易重现,寻找和解决连接泄漏问题颇具挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近开发环境使用过程当中遇到hbase RegionServer 存在过多的zookeeper连接,出先连接泄漏问题。通过jmap命令查看内存信息发现是在zookeeper连接被HRegion当中某些对象保存起来没有释放掉,使用jstack查看当前进程堆栈信息,发现compaction调用了phoenix中代码,如图所示


查找源码发现在DefaultStatisticsCollector类的initGuidepostDepth出代码为


htable是HTableInterface的实现类对象,查看源码发现该对象在创建时需要生产一个RegionCoprocessHConnection对象,该对象父类HConnectionImplementation当中引用了类ZookeeperKeepAliveConnection 对象引用,该类是hbase对zookeeper的封装类,调用HConnectionImplementation当中的getKeeperAliveZookeeperWatcher方法后会将ZookeeperKeepAliveConnection 类的引用实例化并产生zookeeper连接。

  &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值