RocketMQ内存传输及4.7消费线程参数设置的示例分析

这篇文章主要介绍了RocketMQ内存传输及4.7消费线程参数设置的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联公司是一家专注于网站设计制作、网站设计与策划设计,临澧网站建设哪家好?成都创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:临澧等地区。临澧做网站价格咨询:13518219792

一、transferMsgByHeap误解

 

transferMsgByHeap设置为false时,通过堆外内存传输数据,相比堆内存传输减少了数据拷贝、零字节拷贝、效率更高,所以关闭transferMsgByHeap应该成为我们的优先选择,但是实践来看,你或许会改变想法,下面是transferMsgByHeap=false,客户端大量超时错误时的日志截图。

1.Broker日志截图 

RocketMQ内存传输及4.7消费线程参数设置的示例分析

2.CPU情况   
 
 

RocketMQ内存传输及4.7消费线程参数设置的示例分析

3.系统日志截图     
 

RocketMQ内存传输及4.7消费线程参数设置的示例分析

4.源码报错截图     
 

RocketMQ内存传输及4.7消费线程参数设置的示例分析

小结:你看到这里会发现,在关闭transferMsgByHeap时,可能造成堆外内存分配不够,触发系统内存回收和落盘操作。此时CPU会有一个陡坡,具体客户端表现为发送大量超时。解决方式开启transferMsgByHeap即可,让运行更加平稳。

二、消费的最小线程数

  

我们在使用rocketmq消费时,有两个参数consumeThreadMin和consumeThreadMax。在以往的版本中,我们只需要设置consumeThreadMin即可,例如consumeThreadMin=64。在rocket-client4.7版本中,如果设置consumeThreadMin=64会导致消费失败,下面看下原因。 

1.错误提示 

 

org.apache.rocketmq.client.exception.MQClientException: consumeThreadMin (64) is larger than consumeThreadMax (20) 

2.源码原因 

RocketMQ内存传输及4.7消费线程参数设置的示例分析

RocketMQ内存传输及4.7消费线程参数设置的示例分析

在rocketmq-client新版本中,增加了consumeThreadMax的判断。当consumeThreadMin大于20时需要同时设置consumeThreadMax,所以单独设置consumeThreadMin=64会抛出错误导致消费失败。

感谢你能够认真阅读完这篇文章,希望小编分享的“RocketMQ内存传输及4.7消费线程参数设置的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


网页题目:RocketMQ内存传输及4.7消费线程参数设置的示例分析
URL标题:http://myzitong.com/article/gigije.html