Hbase错误解析: Call queue is full on /0.0.0.0:60020, too many items queued ?

2024-06-02 16:58

本文主要是介绍Hbase错误解析: Call queue is full on /0.0.0.0:60020, too many items queued ?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

完整错误日志如下:

2020-02-15 09:21:19,659 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - , tableName=bd_push_device
2020-02-15 09:21:39,795 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - #21692403, table=bd_push_device, attempt=28/35 failed=2ops, last exception: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.CallQueueTooBigException): Call queue is full on /0.0.0.0:60020, too many items queued ? on lvzhuweng,60020,1581302282313, tracking started null, retrying after=20093ms, replay=2ops
2020-02-15 09:21:39,801 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - , tableName=bd_push_device
2020-02-15 09:21:59,891 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - #21692403, table=bd_push_device, attempt=29/35 failed=2ops, last exception: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.CallQueueTooBigException): Call queue is full on /0.0.0.0:60020, too many items queued ? on lvzhuweng,60020,1581302282313, tracking started null, retrying after=20007ms, replay=2ops
2020-02-15 09:21:59,892 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - , tableName=bd_push_device
2020-02-15 09:22:19,900 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - #21692403, table=bd_push_device, attempt=30/35 failed=2ops, last exception: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.CallQueueTooBigException): Call queue is full on /0.0.0.0:60020, too many items queued ? on lvzhuweng,60020,1581302282313, tracking started null, retrying after=20106ms, replay=2ops
2020-02-15 09:22:19,902 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - , tableName=bd_push_device
2020-02-15 09:22:40,008 INFO  org.apache.hadoop.hbase.client.AsyncProcess                   - #21692403, table=bd_push_device, attempt=31/35 failed=2ops, last exception: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.CallQueueTooBigException): Call queue is full on /0.0.0.0:60020, too many items queued ? on lvzhuweng,60020,1581302282313, tracking started null, retrying after=20144ms, replay=2ops

原因:

根据异常日志推测是消费队列(默认长度为10倍的Handler数)打满导致,查看源码ServerRpcConnection类处理请求processRequest()方法:
/**

  • @param buf
  • Has the request header and the request param and optionally
  • encoded data buffer all in this one array.
  • @throws IOException
  • @throws InterruptedException
    */

protected void processRequest(ByteBuff buf) throws IOException,

  InterruptedException {
...if (!this.rpcServer.scheduler.dispatch(new CallRunner(this.rpcServer, call))) {this.rpcServer.callQueueSizeInBytes.add(-1 * call.getSize());this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);call.setResponse(null, null, RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,"Call queue is full on " + this.rpcServer.server.getServerName() +", too many items queued ?");call.sendResponseIfReady();
}

}
得知Server端通过executeRpcCall()方法执行RPC远程调用,CallRunner消费次数超过"hbase.ipc.server.max.callqueue.length"配置值就会引起"too many items queued"异常:
protected boolean executeRpcCall(final ThreadPoolExecutor executor, final AtomicInteger queueSize,

  final CallRunner task) {
// Executors provide no offer, so make our own.
int queued = queueSize.getAndIncrement();
if (maxQueueLength > 0 && queued >= maxQueueLength) {queueSize.decrementAndGet();return false;
}executor.execute(new FifoCallRunner(task){@Overridepublic void run() {task.setStatus(RpcServer.getStatus());task.run();queueSize.decrementAndGet();}
});return true;

}
public FifoRpcScheduler(Configuration conf, int handlerCount) {

this.handlerCount = handlerCount;
this.maxQueueLength = conf.getInt(RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH,handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);

}

public static final String IPC_SERVER_MAX_CALLQUEUE_LENGTH =

  "hbase.ipc.server.max.callqueue.length";

9

 

 

 

解决方法:

队列 满了, 可以设置大一些。

 

 

 

 

 

 


 

这篇关于Hbase错误解析: Call queue is full on /0.0.0.0:60020, too many items queued ?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024551

相关文章

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC