首页 > 其他分享 >mq超时异常org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]br

mq超时异常org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]br

时间:2023-02-27 11:25:38浏览次数:51  
标签:control MQClientAPIImpl CODE 21 19 59.018 queue apache org

     mq生产环境正常生产和消费都挺稳定的,99.999%应该都没问题的,比较稳定。今天刚好碰到过一例因为写超时导致异常问题。

    

    2023-02-23 21:19:58.449 TID:8b8a430ff3d34213a374de3550822503.789.16771583982424385 [ERROR] [NettyClientPublicExecutor_2] [c.g.m.m.p.m.UserTaskOraProducer:90] --- UserTaskOraProducer发送失败,key:task_post_be_highlightU910943377267384320,typeCode:task_post_be_highlight
+1

21:19:59.018
2023-02-23 21:19:58.449 TID:8b8a430ff3d34213a374de3550822503.727.16771583977572409 [WARN ] [XNIO-1 task-43] [RocketmqClient:130] --- sendKernelImpl exception, resend at once, InvokeID: 4921002808992973274, RT: 204ms, Broker: MessageQueue [topic=marketing-badge-task-gray, brokerName=RaftNode00, queueId=1]
+2

21:19:59.018
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 2  DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 203ms, size of queue: 1
+3

21:19:59.018
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/
+4

21:19:59.018
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.processSendResponse(MQClientAPIImpl.java:665)
+5

21:19:59.018
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:505)
+6

21:19:59.018
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage$original$gcDrtLSO(MQClientAPIImpl.java:487)
+7

21:19:59.018
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage$original$gcDrtLSO$accessor$n9m8eZyq(MQClientAPIImpl.java)
+8

21:19:59.018
    at org.apache.rocketmq.client.impl.MQClientAPIImpl$auxiliary$uyI9DykF.call(Unknown Source)
+9

21:19:59.018
    at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)
+10

21:19:59.018
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java)

 

 

我们用rocketMQ发消息的流程,大致就是首先producer向broker发送消息写入请求,broker接收到请求之后会放进队列中(这个队列大小默认10000),然后有一个线程数为1的线程来从队列取消息去执行消息写入。

正常这个流程没啥,但是一旦broker端挤压了大量的请求而得不到及时的处理。消息发送端默认的超时时间是3s,这样数据量大的时候就大概率会出现不少超时的情况,这些就会造成大量的无效处理。

所以rocketMQ就引入了快速失败机制,简单来说就是开了个定时任务,默认是将队列中超过200ms的请求直接取消,直接向客户端返回失败。

很多人认为都去github上去提了issue,认为SYSTEM_ERROR类型的错误,broker端都做了重试,为啥 SYSTEM_BUSY遗漏了,觉得这是一个bug。

但是作者的回复是,当broker繁忙的时候,自动重试无疑只会增加mq的压力,起不到关键的帮助。

解决方案:
将 waitTimeMillsInSendQueue 调大,默认是200ms
开启 transientStorePoolEnable
扩容
简单讲一下第二种,开启 transientStorePoolEnable 的方式

 

transientStorePoolEnable置为true之后,相当于消息直接写入到堆外内存,然后消息一批批写入到pageCache,以此来降低对pageCache的压力
————————————————
版权声明:本文为CSDN博主「白衣神棍」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29914229/article/details/126831516

标签:control,MQClientAPIImpl,CODE,21,19,59.018,queue,apache,org
From: https://www.cnblogs.com/thinkingandworkinghard/p/17158990.html

相关文章

  • vs code 提交代码弹框提示:请确保已在git中配置您的“user.name”和“user.email” —
    修改完项目代码,准备提交到git上,结果提交失败,弹框提示:请确保已在Git中配置您的“user.name”和“user.email”打开终端,配置运行一下命令$gitconfig--globaluser.name......
  • [LeetCode] 1333. Filter Restaurants by Vegan-Friendly, Price and Distance 餐厅过
    Giventhearray restaurants where restaurants[i]=[idi,ratingi,veganFriendlyi,pricei,distancei].Youhavetofiltertherestaurantsusingthreefilte......
  • 【DFS】LeetCode 52. N 皇后 II
    题目链接52.N皇后II思路与52.N皇后II一致代码classSolution{privateintresult;privateboolean[]mainDiag;privateboolean[]subDiag;......
  • 【转载】vsCode JS代码格式化插件ESlint
    验证有效,Ctrl+S保存代码全格式化了。写这个主要是个人笔记,算不得重复造。转载自:https://blog.csdn.net/qq_34803821/article/details/849727811、安装插件VSCode中打开......
  • 【DFS】LeetCode 51. N 皇后
    题目链接51.N皇后思路代码classSolution{privateList<List<String>>result;privateboolean[]mainDiagonal;privateboolean[]subDiagonal;......
  • 登峰造极,师出造化,Pytorch人工智能AI图像增强框架ControlNet绘画实践,基于Python3.10
    人工智能太疯狂,传统劳动力和内容创作平台被AI枪毙,弃尸尘埃。并非空穴来风,也不是危言耸听,人工智能AI图像增强框架ControlNet正在疯狂地改写绘画艺术的发展进程,你问我绘画行......
  • AtCoder Beginner Contest 291
    比赛链接A-camelCase题目大意给一个由英文字母构成的字符串\(S\),\(S\)中只有一个大写字母,输出该大写字母是字符串中第几个字母。题目思路遍历字符串找出大写字母......
  • 6.queue
    queuequeue是队列,只能在队尾插入队头删除,先进先出特点不支持随机存取、不支持遍历、不支持迭代器函数函数十分简单,不多做赘述returntypefront();returtypeback(......
  • Codeforces Global Round 15 CF1552 A~G 题解
    点我看题对两三年前的cf进行考古的时候偶然做到这场,像这种全是构造题和思维题的比赛还是比较少见的。题目本身很有意思,但是对于现场打比赛想上分的人来说体验就比较差了。......
  • 关于vs code的卸载
    今天为了配置git把vsc的环境搞得有些乱七八糟,于是想着重装一下,可是卸载后重新安装还是之前那样,无奈上网查资料,发现除了安装目录之外,还要删除两个文件夹:C:\Users\admin\.vsc......