公司的项目有用到hbase数据库,而我正好负责hbase客户端的接口代码编写工作;实际就是为hbase中的各个表,提供增,删,改,查的功能。
前段时间,同事对接口进行测试时,跟我反馈:在使用visualVM在查看线程运行状态时,发现hbase客户端的线程很多,具体干什么不清楚,但其中很多线程处于等待状态。起初,没时间就没在意。这段时间,功能差不多了,就也用visualvm来查看线程状态。
一,使用visualvm来查看线程状态
从图片可以看到,有256个名称为“hconnection-0x14ba9a2-shared-pool12-tX”的线程;其中很多线程是处于等待状态,只有位为数不多的线程在执行客户端对hbase数据库的操作。这里应该是可以进行优化的。
先说一下,我们项目大概是如何使用hbase客户端的。代码类似如下:
//表名
String tableName = "TableName";
//创建配置对象
Configuration c = new Configuration();
Configuration hbaseConfiguration = HBaseConfiguration.create(c);
//创建连接
HConnection hbaseConnection = HConnectionManager.createConnection(hbaseConfiguration);