作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题
代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等
释放21集全网最深ConcurrentHashMap的vip视频,复现每一行源码
上一章,我们介绍了RocketMQ的生产部署,由于在正式生产部署前一般都需要进行性能测试,所以本章我们来看下如何对RocketMQ进行性能测试。
一、性能指标监控
既然是性能测试,那么必然要看RocketMQ集群能承载的最高QPS是多少?同时在承载这个QPS的同时,各个机器的CPU、IO、磁盘、网络、内存的负载情况,以及JVM的GC情况等等。
我们如何去观察这些指标吗?通常来说,指标分为两部分:
- 机器本身指标:也就是上述说的CPU、内存、IO等等;
- RocketMQ指标:生产消息TPS、消费消息TPS、集群整体情况等等;
1.1 机器指标
对于机器指标,最简单的方式我们可以通过OS自身的一些命令进行观察,比如top
、free
等等,后面在压测环节我会具体讲。
一般大一点的公司都会有自己的监控平台,比如Zabbix、Open-Falcon等等,通过它们就可以对机器指标有一个较好的监控。
1.2 RocketMQ管理平台
RoeketMQ自身提供了可视化的管理界面,可以看到NameServer、Broker、Topic等基本信息。我们先来看下如何启动这个管理应用。
我们首先在任意一台部署了NameServer的机器上,执行以下命令:
git clone https://github.com/apache/rocketmq-externals.git
然后进入rocketmq-console
目录,进行打包:
mvn package -DskipTests
最后启动管理平台:
java -jar rocketmq-console-ng-1.0.1.jar --server.port=8080 --rocketmq.config.namesrvAddr=127.0.0.1:9876
然后就可以通过浏览器访问8080端口进行管理了:
二、系统参数调整
对于生产环境的RocketMQ集群,我们一般不能直接用默认参数启动,因为那样可能没法把中间件的性能发挥出来。所以,需要对部署MQ的机器的一些参数进行调整。
2.1 OS内核参数调整
由于OS的内核参数默认值未必适合生产环境下的MQ运行,所以一般需要根据机器配置进行调整。