提供mqtt服务的软件有多种,比如ActiveMQ、mosquitto、EMQ等。
这里选择在一个Linux主机上安装EMQ作为MQTT broker,然后用Jmeter连接到它,进行测试。
安装EMQ并启动
- 从EMQ官网下载EMQ安装包:http://www.emqtt.com/downloads
- 拷贝到一个Linux主机上直接安装。
- 执行以下命令启动控制台。启动时EMQ会自动检查各项功能,如果都是Successful,说明安装成功。
emqx console
- 退出控制台,现在可直接使用以下命令启动或停止EMQ进程。
emqx start
emqx stop
- 启动EMQ时,在浏览器中输入以下网址(localhost改为EMQ所在主机的ip地址),便可访问EMQ的web控制页面。默认用户名: admin, 密码: public。
安装Jmeter并进行测试
Jmeter是一个由Apache基金会推出、基于Java的通用测试软件,可以在图形化界面中很方便地制定test plan然后执行它。
-
安装一个Jmeter到本地电脑,并安装好JDK,配置Java和Jmeter所需的环境变量,使得Jmeter能正常启动。
-
下载一个测试mqtt的Jmeter插件:https://github.com/emqx/mqtt-jmeter
- 该插件包含四个sample,拷贝其jar文件到Jmeter的安装目录下的lib/ext文件中即可。
- 如果不懂Jmeter的用法,请参考该插件的README文件。 -
通过Jmeter根目录下的bin/jmeter.bat或bin/jmeter.sh启动它的GUI界面。启动时可能报出warning,但可以忽略。
-
在Jmeter中添加一个test plan,点击"start"开始测试。
- 如下,是一个只有MQTT Connect、DisConnect、Summary Report的test plan。
- 可参考的mqtt测试报告:https://emq-xmeter-benchmark-cn.readthedocs.io/en/latest/index.html
用一个Jmeter控制多个Jmeter进行测试
在多台电脑上分别安装Jmeter,然后选择一个Jmeter(记作master),控制其它Jmeter(记作slave)进行测试。slave Jmeter会将测试结果回传给master Jmeter。
测试步骤:
- 在多台电脑上分别安装Jmeter,并拷贝mqtt-jmeter插件。
- 为了能连接到slave Jmeter,修改master Jmeter根目录下的bin/jmeter.properties文件,找到remote_hosts=127.0.0.1这一行,在此处加入slave Jmeter的ip地址,端口号为1099,例如:
remote_hosts=10.10.10.1:1099
- 为了避免连接slave Jmeter时,因为SSL认证不通过而报错,找到server.rmi.ssl.disable=false这一行,将它改为:
server.rmi.ssl.disable=true
- 进入slave Jmeter根目录下的bin文件,执行以下命令(hostname设为slave Jmeter所在主机的ip地址),启动Jmeter server,它会保持运行,等待master Jmeter的控制。
./jmeter-server -Djava.rmi.server.hostname=10.10.10.1
- 启动master Jmeter的图形化界面,添加test plan,然后点击"remote start",间接启动slave Jmeter开始测试。