Tsung MQTT压力测试
参考资料:
http://tsung.erlang-projects.org/user_manual/
https://www.cnblogs.com/lingyejun/p/7941271.html
https://www.cnblogs.com/saryli/p/9807220.html
http://www.51ste.com/share/det-222.html
Tsung安装
- 安装环境
Linux版本:Ubuntu 16.04 LTS
Tsung版本:1.7.0
- 安装前准备
sudo apt-get install gcc -y
sudo apt-get install perl -y #报表会使用到
sudo apt-get install gnuplot -y #图形时用
- 安装步骤
(1)下载并安装erlang
apt-get install erlang #这步安装需要花费一段时间
或者
tar zxf otp_src_20.0.tar.gz
cd otp_src_20.0
./configure --prefix=/usr/local/erlang --without-javac
make -j 2
make install
(2)下载安装tsung
wget http://tsung.erlang-projects.org/dist/tsung-1.7.0.tar.gz
cd /usr/local
mkdir tsung
tar -zxvf tsung-1.6.0.tar.gz
cd tsung-1.6.0
./configure --prefix=/usr/local/tsung --with-erlang=/usr/lib/erlang
#指定tsung的安装路径,erlang的安装路径(该路径可以通过“find / -name erlang”查找)
make
make install
(3)下载并安装perl Template,用于生成报告模板
cd /usr/local
wget http://www.cpan.org/modules/by-module/Template/Template-Toolkit-2.26.tar.gz
tar -zxvf Template-Toolkit-2.26.tar.gz
cd Template-Toolkit-2.26
perl Makefile.PL
make
make test
make install
Tsung使用
- 在tsung安装目录下新建conf目录,存放log和conf,修改/bin/tsung文件
修改MAIN_DIR
修改OPT_FILE
把tsung提供的模板配置文件复制到./conf下
cp /usr/local/tsung/share/doc/tsung/examples/mqtt.xml ./conf
- 运行tsung,默认执行脚本tsung.xml
tsung start
- 运行mqtt.xml
把mqtt.xml放在bin目录下
mqtt设置
运行tsung
在相对应的logs文件夹下运行
/usr/local/tsung/lib/tsung/bin/tsung_stats.pl
运行完成之后
打开report.html即可看到报告
mqtt.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/tsung/share/tsung/tsung-1.0.dtd">
<tsung loglevel="debug" version="1.0">
<clients>
<client host="localhost" maxusers="5" use_controller_vm="true"></client>
</clients>
<servers>
<server host="127.0.0.1" port="1883" type="tcp" />
</servers>
<load>
<user session="mqtt_subscriber" start_time="10" unit="second"></user>
<arrivalphase phase="1" duration="3" unit="second">
<users maxnumber="1" arrivalrate="1" unit="second"/>
</arrivalphase>
</load>
<sessions>
<session name="mqtt_publisher" probability="100" type="ts_mqtt">
<request>
<mqtt type="connect" clean_start="true" keepalive="10" will_topic="will_topic" will_qos="0" will_msg="will_msg" will_retain="false"></mqtt>
</request>
<for from="1" to="10" incr="1" var="loops">
<request subst="true">
<mqtt type="publish" topic="test_topic" qos="1" retained="true">test_message</mqtt>
</request>
</for>
<request>
<mqtt type=