• 【RocketMQ】如何快速检查RocketMQ集群延迟情况


    背景

    业务团队在排查系统耗时时,说是定位到MQ这里耗时比较严重,本着严谨负责的心态,用集群的实际的延迟数据说话,排除集群本身的问题。

    命令讲解

    进入RocketMQ的安装目录,bin目录下有一个mqadmin命令,可以用来运维、管理、测试集群,直接不带参数执行该命令,会列出所有支持的子命令。

    发现有两个命令可以检查集群的RT情况:

    • checkMsgSendRT: 检查消息发送延迟情况(response time)
    • clusterRT: 检查所有集群(可以理解为master-slave组,对应broker.conf中的brokerName)的延迟情况

    checkMsgSendRT是以生产者的角度,检查发送消息的延迟情况,而clusterRT更关注的是集群中每组主从子集群的延迟情况,后面可以根据每个命令的参数来做了解。

    命令实操

    checkMsgSendRT

    参数

    [root@mq01 bin]# ./mqadmin checkMsgSendRT -h
    usage: mqadmin checkMsgSendRT [-a <arg>] [-h] [-n <arg>] -s <arg> -t <arg>
     -a,--amount <arg>        message amount | default 100
     -h,--help                Print help
     -n,--namesrvAddr <arg>   Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876
     -s,--size <arg>          message size | default 128 Byte
     -t,--topic <arg>         topic name
    [root@mq01 bin]#
    [root@mq01 bin]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    参数含义备注
    -h,–help打印help信息
    -n,–namesrvAddrnameserver服务地址列表必填
    -a,–amount消息数量默认:100
    -s,–size消息大小默认:128 Byte
    -t,–topictopic名称必填

    示例:

    root@XXGL-T-TJSYZ-REDIS-01 bin]# ./mqadmin checkMsgSendRT -n 172.24.30.192:9876 -a 10 -s 64 -t zhurunhua
    RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
    RocketMQLog:WARN Please initialize the logger system properly.
    #Broker Name                      #QID  #Send Result            #RT
    broker-b                          0     true                    211
    broker-b                          1     true                    2
    broker-b                          2     true                    7
    broker-b                          3     true                    2
    broker-b                          4     true                    3
    broker-b                          5     true                    3
    broker-b                          6     true                    3
    broker-b                          7     true                    3
    broker-c                          0     true                    6
    broker-c                          1     true                    3
    Avg RT: 3.56
    [root@XXGL-T-TJSYZ-REDIS-01 bin]#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    命令会输出每条消息的发送耗时和平均耗时,但是没有标明单位,经过查看源码,证实单位为ms:

    clusterRT

    参数

    [root@mq01 bin]# ./mqadmin clusterRT -h
    usage: mqadmin clusterRT [-a <arg>] [-c <arg>] [-h] [-i <arg>] [-m <arg>] [-n <arg>] [-p <arg>] -s <arg>
     -a,--amount <arg>         message amount | default 100
     -c,--cluster <arg>        cluster name | default display all cluster
     -h,--help                 Print help
     -i,--interval <arg>       print interval | default 10 seconds
     -m,--machine room <arg>   machine room name | default noname
     -n,--namesrvAddr <arg>    Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876
     -p,--print log <arg>      print as tlog | default false
     -s,--size <arg>           message size | default 128 Byte
    [root@mq01 bin]#
    [root@mq01 bin]# 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    参数含义备注
    -h,–help打印help信息
    -n,–namesrvAddr nameserver服务地址列表必填
    -a,–amount 消息数量默认:100
    -c,–cluster 指定cluster名称不指定则打印所有
    -i,–interval 打印间隔默认:10秒
    -m,–machine room 机器room name默认:noname
    -p,–print log 以日志形式打印true|false(默认)
    -s,–size 消息大小默认:128 Byte
    [root@XXGL-T-TJSYZ-REDIS-01 bin]# ./mqadmin clusterRT  -n 172.24.30.192:9876 -s 128 -i 3
    RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
    RocketMQLog:WARN Please initialize the logger system properly.
    #Cluster Name             #Broker Name              #RT   #successCount  #failCount
    xdf-test1                 broker-b                  1.82      50                0               
    xdf-test1                 broker-c                  1.53      50                0               
    xdf-test1                 broker-a                  1.27      50                0               
    xdf-test1                 broker-b                  1.78      50                0               
    xdf-test1                 broker-c                  1.49      50                0               
    xdf-test1                 broker-a                  0.88      50                0               
    xdf-test1                 broker-b                  0.90      50                0               
    xdf-test1                 broker-c                  1.08      50                0               
    xdf-test1                 broker-a                  0.94      50                0               
    xdf-test1                 broker-b                  0.86      50                0               
    xdf-test1                 broker-c                  0.92      50                0               
    xdf-test1                 broker-a                  0.49      50                0 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    值得注意的是,我们并没有指定topic,那消息发送到哪个topic了呢?继续看源码:

    Message的构造方法,第一个参数为topic:

    也就是说命令使用的是内部自动创建好的topic,集群在创建时,会默认把集群名、每个broker的名称新建为topic。

    经过一顿的操作,集群本身肯定是没问题的,其他方面的问题,诸如网络、业务代码的问题,那就需要进一步排查了。

    想了解mqadmin其他子命令和用途的,可以查看我的另一篇文章:官方运维管理命令mqadmin使用手册(讲解+实操)

  • 相关阅读:
    大模型遇上数智化,腾讯云与行业专家共探行业AI发展之路
    大模型日报 2024-06-28
    74ls192无法正常使用。
    SpringBoot集成nacos实现统一配置中心
    SENSORO 城市数字化服务平台入围2023《财富》中国最佳设计榜
    YOLOv7改进:CBAM注意力机制
    为什么企业需要生产运营管理系统
    使用正确的命令重启WSL子系统
    分布式文件系统fastDFS
    OpenHarmony鸿蒙南向开发案例:【智能窗户通风设备】
  • 原文地址:https://blog.csdn.net/sinat_14840559/article/details/127749586