【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]# 
参数含义备注
-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]#

命令会输出每条消息的发送耗时和平均耗时,但是没有标明单位,经过查看源码,证实单位为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]# 

参数含义备注
-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 

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

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

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

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值