开发者社区 > 云原生 > 消息队列 > 正文

RocketMQ为什么这里不会显示消费消息的TPS?该咋解决?

4015cca4d098fae98f704640e40ba107.png
RocketMQ为什么这里不会显示消费消息的TPS?该咋解决?现在用的是rocketmq-5.1.4的。

展开
收起
-Feng、冯冯 2023-12-05 18:41:38 61 0
3 条回答
写回答
取消 提交回答
  • 看起来你的RocketMQ集群中某些分片未报告消费消息的每秒传输速率(TPS),这可能是由于以下几个原因造成的:

    1. 分布式事务:如果你启用了分布式事务(DT), 那么生产者的消息将被提交给多个消费者实例,每个实例都会生成自己的消息发送统计。在这种情况下,你应该查看各个消费者的 TPS 而不是整个群集的 TPS.
    2. 消费模式设置不一致:请确保所有消费者都设置了相同的消费模式(如 ConsumeMode.OFFLINE_MASSIVE or ConsumeMode.CLUSTERING). 不同的消费模式可能导致不同的消息处理逻辑以及消息计数方式不同。
    3. 消息重试机制:当消息因为各种原因未能成功传递给下游消费者时,RocketMQ会自动重新投递此条消息。这种情况下,同一消息会被多次计入生产和消费总数,从而造成实际 TPS 偏低的情况。
      要解决这个问题,你可以考虑采取以下措施:
    4. 检查并调整分布式事务相关的参数,例如 transaction_confirmed_timeoutmaxCommitLogSizeInMB.
    5. 在所有的消费者中统一设置消费模式。
    6. 根据业务需求合理配置消息重试策略,避免过多的消息重复投递。
    2023-12-29 16:11:27
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    RocketMQ的消费TPS不显示可能是由于消费端代码中存在资源争抢或处理消息异常等问题。当消息处理发生异常,没有被正确捕获并返回消费状态时,也可能导致TPS无法正常显示。此外,如果消费逻辑的代码中存在某种资源紧张,导致获取这种资源的时间较长,那么消息消费的耗时就会增长,从而导致TPS下降,消费速度无法跟上消息生产的速度,进一步导致消息堆积。

    解决这个问题的方法有:

    1. 优化消费端代码,减少资源争抢,提高处理效率;
    2. 增强异常处理机制,确保消费端能够正确捕获和处理消费过程中出现的异常;
    3. 重启消费端服务器,观察是否有恢复。
    2023-12-05 20:29:29
    赞同 展开评论 打赏
  • 估计是console调用接口返回和现在broker最新版本不兼容了。console是最新的代码吗?后面我看看,可能是一个叫getTransferredTps的变量名换了,之前是写错的。此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-12-05 18:52:42
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载