今天发现hbase有个regionserver挂了,于是登录cm重启,发现没有起来,然后看日志发现报错了,报错信息如下:
于是百度查询,发现网上好多是修改 hbase.ipc.server.max.callqueue.size 这个参数,其实增加队列大小即可,不用设置这个,我的解决方法是增加 RegionServer 中启动的 RPC 服务器实例数量:
hbase.regionserver.handler.count 默认30个,增加到200个,交替重启。好了,regionserver起来了
知识点:
hbase.regionserver.handler.count
该配置参数用于定义regionserver上用于等待响应用户表级请求的线程数,通常的配置规则是:当每次请求的数据量较大时(如接近MB的单词put,cache较大的scan操作);当每次请求负载较小时,则把该值配置较大。同时在请求的数据量大小收到参数hbase.ipc.server.max.callqueue.size.限制,典型的配置场景是网站后端的HBase集群,这种场景下大多数为读请求,很少写请求,因此这种场景可以把该值配置到最大也是安全的。
如果单个请求的数据量很大,并且将该值配置的很大时,put并发量很高时,会给内存造成很大压力,甚至有可能触发内存溢出。
可以通过查看rpc.logging(regionserver打开DEBUG日志级别),根据在排队的线程数量消耗的内存大小来判断hbase.regionserver.handler.count配置是否过大或者过小。
hbase 重启regionserver报错 Call queue is full on xxxx,16000,1611197476326, too many items queued
最新推荐文章于 2021-11-15 16:04:22 发布