压测
-
压测的基准是超出正常流量的2~3倍之间,预留空间应对突发流量
-
压测方式
- 通过Jmeter写代码方式,集成RocketMQ客户端
- 通过RocketMQ自带的压测脚本
-
压测脚本producer.sh
名称 含义 -h 使用帮助 -k 测试时消息是否有 key,默认 false -n NameServer 地址 -s 消息大小,默认为 128 个字节 -t 主题名称 -w 并发线程的数量,默认 64 个 -
可根据实际情况设计自己的压测场景
-
压测场景一:1 个线程、消息大小为 1K、主题为4个队列。以下结果中发送最大 TPS 为 156,最大 RT 为 1313,平均 RT 为6.390
$ cd ./benchmark $ sh producer.sh -t load-test -w 1 -s 1024 -n rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 Send TPS: 39 Max RT(ms): 1313 Average RT(ms): 26.475 Send Failed: 0 Response Failed: 0 Send TPS: 47 Max RT(ms): 1313 Average RT(ms): 21.242 Send Failed: 0 Response Failed: 0 Send TPS: 79 Max RT(ms): 1313 Average RT(ms): 12.469 Send Failed: 0 Response Failed: 0 Send TPS: 137 Max RT(ms): 1313 Average RT(ms): 7.205 Send Failed: 0 Response Failed: 0 Send TPS: 144 Max RT(ms): 1313 Average RT(ms): 6.882 Send Failed: 0 Response Failed: 0 Send TPS: 156 Max RT(ms): 1313 Average RT(ms): 6.390 Send Failed: 0 Response Failed: 0 ...省略...
集群
-
集群列表:查看集群各个节点的运行情况
$ mqadmin clusterList -n rocketmq-nameserver1:9876 #Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE DefaultCluster rocketmq-master1 0 172.19.0.4:10911 V4_9_4 95.53(0,0ms) 0.00(0,0ms) 0 0.83 0.9400 DefaultCluster rocketmq-master1 1 172.19.0.6:10911 V4_9_4 96.71(0,0ms) 0.00(0,0ms) 0 0.83 0.9400 DefaultCluster rocketmq-master2 0 172.19.0.5:10911 V4_9_4 95.86(0,0ms) 0.00(0,0ms) 0 0.83 0.9400 DefaultCluster rocketmq-master2 1 172.19.0.7:10911 V4_9_4 95.95(0,0ms) 0.00(0,0ms) 0 0.83 0.9400 -n Nameserver 地址 Cluster Name 集群名称 Broker Name 节点 Broker 名称 BID Broker ID (0 为主节点,从节点非 0 表示) Addr 节点地址(ip:port) Version RocketMQ 的版本号 InTPS 节点每秒写入的消息数量 OutTPS 节点每秒读出的消息数量 PCWait pageCacheLockTimeMills(消息落盘会加锁,当前时间与最后一次加锁的差值) Hour 磁盘存储多久的有效消息(当前时间与磁盘存储最早的一条消息时间戳的差值) SPACE 磁盘已使用的占比
-
集群中所有主题/消费组的实时吞吐情况
$ mqadmin statsAll -n rocketmq-nameserver1:9876 #Topic #Consumer Group #Accumulation #InTPS #OutTPS #InMsg24Hour #OutMsg24Hour SCHEDULE_TOPIC_XXXX 0 0.00 0 NO_CONSUMER RMQ_SYS_TRANS_HALF_TOPIC 0 0.00 0 NO_CONSUMER RMQ_SYS_TRACE_TOPIC 0 0.00 0 NO_CONSUMER rocketmq-master1 0 0.00 0 NO_CONSUMER DefaultCluster_REPLY_TOPIC 0 0.00 0 NO_CONSUMER rocketmq-master2 0 0.00 0 NO_CONSUMER BenchmarkTest 0 0.00 0 NO_CONSUMER OFFSET_MOVED_EVENT 0 0.00 0 NO_CONSUMER load-test 0 200.90 578781 NO_CONSUMER TBW102 0 0.00 0 NO_CONSUMER SELF_TEST_TOPIC 0 0.00 0 NO_CONSUMER DefaultCluster 0 0.00 0 NO_CONSUMER -n Nameserver 地址 -a 只打印活动的主题 -t 只打印指定的主题 Topic 主题名称 Consumer Group 消费组名称 Accumulation 消息堆积数量 InTPS 该主题每秒写入的消息数量 OutTPS 该消费组每秒消费的消息数量 InMsg24Hour 该主题 24 小时写入的消息总数 OutMsg24Hour 该消费组 24 小时消费的消息总数
Broker
-
查看某个Broker的运行状态
$ mqadmin brokerStatus -b 172.19.0.5:10911 -n rocketmq-nameserver1:9876 # END_TRANSACTION 的线程池请求数 EndTransactionQueueSize : 0 # END_TRANSACTION 线程池大小,默认 100000 EndTransactionThreadPoolQueueCapacity: 100000 # Broker 启动时间 bootTimestamp : 1660531134035 # Broker 版本 brokerVersion : 401 # Broker 版本描述 brokerVersionDesc : V4_9_4 # commitLog 目录磁盘使用情况 commitLogDirCapacity : Total : 465.7 GiB, Free : 24.4 GiB. # commitLog 目录磁盘使用百分比 commitLogDiskRatio : 0.95 commitLogDiskRatio_/usr/local/apache-rocketmq/data/store/commitlog: 0.95 # commitLog 最大偏移量 commitLogMaxOffset : 1599304708 # commitLog 最小偏移量 commitLogMinOffset : 0 consumeQueueDiskRatio : 0.95 # 已在 commit log 中存储未转发到 consume queue 的数据(单位字节) dispatchBehindBytes : 0 # 可忽略未被使用 dispatchMaxBuffer : 0 # 存储最早消息的时间戳 earliestMessageTimeStamp : 1660531324537 # 拉取时被找到的消息 Tps 统计,分别表示前 10s、1 分钟、10 分钟平均 Tps getFoundTps :