开发者社区 > 云原生 > 正文

有时原因:MQBrokerException代码:2描述:[TIMEOUT_CLEAN_QUEUE]

MQBrokerException代码:2 DESC:[TIMEOUT_CLEAN_QUEUE]代理繁忙,启动流控制一段时间,队列中的周期:207ms,队列大小为0。

rocketmq 4.5.2,集群是syn双写、异步刷新磁盘。

G1 gc最大暂停时间非常低,小于20ms。

BrokerFastFailure.start方法每10毫秒启动一个线程来清理Expired Request。 线程作业之一是检查SendThreadPoolQueue,如果队列中有一条消息超过200毫秒(默认waitTimeMillsInSendQueue=200),则该消息将被删除。 在SendMessageProcessor的handleHA方法中,syncFlushTimeout为5000。 这是一个糟糕的默认参数。

默认参数为

syncFlushTimeout=5000 waitTimeMillsInSendQueue=5000 客户端jar移除 long costTime=beginTimestampPrev-beginTimestampFirst;if(timeout<costTime){callTimeout=true;break;} 这意味着param sendmessagetimeout意味着一个发送动作超时值为3000,

原提问者GitHub用户lwclover

展开
收起
芬奇福贵 2023-05-26 11:18:28 114 0
1 条回答
写回答
取消 提交回答
  • 建议增加sendMessageThreadPoolNums和waitTimeMillsInSendQueue的数量。此外,您可以测试4.7.1,它的性能提高了大约十倍。

    原回答者GitHub用户duhenglucky

    2023-05-26 17:29:15
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载