基于TSUNG对MQTT进行压力测试-测试结果
一、TSUNG压测前概念温习
https://www.cnblogs.com/lingyejun/p/7898873.html
二、TSUNG在服务器上的安装步骤
Tsung压测时总连接数 = 本机可用IP地址数量×本机可用端口的数量×远程服务器可访问IP地址数量×远程服务器可访问端口数量。
yum install -y gcc gcc-c++ make libX11 xauth
yum install -y cairo-devel pango-devel freetype-devel gd-devel
yum install -y ncurses-devel openssl-devel unixODBC-devel wxWidgets-devel wxGTK3-docs mesa-libGL-devel wget http://erlang.org/download/otp_src_20.0.tar.gz
wget https://www.cpan.org/modules/by-module/Template/Template-Toolkit-2.26.tar.gz
wget http://tsung.erlang-projects.org/dist/tsung-1.7.0.tar.gz 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 tar zxf gnuplot-4.4.2.tar.gz
cd gnuplot-4.4.2
./configure
make -j 2
make install export PATH=$PATH:/usr/local/erlang/bin/
tar zxf tsung-1.7.0.tar.gz
cd tsung-1.7.0
./configure --prefix=/usr/local/tsung
三、TSUNG的测试脚本
<?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="bogon" maxusers="100000" cpu="1">
<ip value="192.168.1.152"></ip>
<ip value="192.168.1.153"></ip>
<ip value="192.168.1.154"></ip>
<ip value="192.168.1.155"></ip>
</client>
</clients> <servers>
<server host="192.168.1.110" port="61613" type="tcp" />
</servers> <load>
<user session="mqtt_subscriber" start_time="30" unit="second"></user>
<arrivalphase phase="1" duration="60" unit="second">
<users maxnumber="100000" arrivalrate="5000" unit="second"/>
</arrivalphase>
</load> <sessions>
<session name="mqtt_publisher" probability="100" type="ts_mqtt">
<request>
<mqtt type="connect" clean_start="true" keepalive="10" username="admin" password="password" will_topic="phihome/test" 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="phihome/test" qos="1" retained="true">test_message</mqtt>
</request>
</for> <request>
<mqtt type="disconnect"></mqtt>
</request>
</session>
<session name="mqtt_subscriber" probability="0" type="ts_mqtt">
<request>
<mqtt type="connect" clean_start="true" keepalive="10"></mqtt>
</request> <request subst="true">
<mqtt type="subscribe" topic="test_topic" qos="1"></mqtt>
</request> <request>
<!-- wait for 60s -->
<mqtt type="waitForMessages" timeout="60"></mqtt>
</request> <request subst="true">
<mqtt type="unsubscribe" topic="test_topic"></mqtt>
</request> <request>
<mqtt type="disconnect"></mqtt>
</request>
</session>
</sessions>
</tsung>
四、测试结果总览
硬件配置 |
tsung压测客户端配置:i7 8核 32G |
||
mqtt服务器端:i5 4核 6G 128SSD |
|||
测试场景 |
最大连接数 |
峰值时客户端情况 |
峰值时服务器端情况 |
c4cpu+s5g+4gmqtt+nolog |
197626 |
cpu充足,内存充足。 |
cpu充足,内存有剩余。 |
c6cpu+s6g+4gmqtt+nolog |
281477 |
cpu充足,内存充足。 |
cpu充足,内存有剩余。 |
c6cpu+s6g+2gmqtt+log |
287524 |
cpu充足,内存充足。 |
cpu充足,内存有剩余。 |
c6cpu+s6g+4gmqtt+log |
283365 |
cpu充足,内存充足。 |
cpu充足,内存有剩余。 |
上图测试场景术语介绍: |
|
c4cpu+s5g+4gmqtt+nolog |
压测客户端使用了4个cpu进行压测,mqtt服务器端为5g内存,进程启动内存为4g,启动时关闭了日志输出。 |
c6cpu+s6g+4gmqtt+nolog |
压测客户端使用了6个cpu进行压测,mqtt服务器端为6g内存,进程启动内存为4g,启动时关闭了日志输出。 |
c6cpu+s6g+2gmqtt+log |
压测客户端使用了6个cpu进行压测,mqtt服务器端为6g内存,进程启动内存为2g,启动时开启了日志输出。 |
c6cpu+s6g+4gmqtt+log |
压测客户端使用了6个cpu进行压测,mqtt服务器端为6g内存,进程启动内存为4g,启动时开启了日志输出。 |
注:单台Tsung压测官网纯净版mosquitto(单台Broker),峰值时连接数为197626,后续有追加了另外一台tsung,一共两台机器一起压。
单台最大峰值时的连接数截图:
两台最大峰值时的连接数截图:
最新文章
- CSS3回执特殊图形
- 配置apache apache服务器如何配置多站点
- D:Balanced Lineup
- 为什么移动Web应用很慢?
- gulp入坑系列(2)——初试JS代码合并与压缩
- Ubuntu 14.04 AMD 64位 下 Android Studio 的安装
- 关于消除超长的case列表的一个思路
- OO之工厂模式
- Fat-tree 胖树交换网络
- bzoj3884: 上帝与集合的正确用法 欧拉降幂公式
- SAE搭建WordPress教程 免费建WordPress博客站
- EXTJS 3.0 资料 控件之 combo 用法
- hdu 1050 Moving Tables
- JavaScript之Chart.js图例(legend)
- Code Forces 711D Directed Roads
- dinic网络流模板
- Java类修饰符
- Mysql数据库文件、表、记录的增删改查
- hive数据导出到本地目录 抛异常
- lombok @Builder注解使用的例子、反编译之后的代码详解
热门文章
- jQuery实用技巧必备
- 关于CentOS系统中,文件权限第11位上是一个点的解读
- Gradle详解+Groovy
- Ubuntu 16.04 LTS nodejs+pm2+nginx+git 基础安装及配置环境(未完,未整理)
- Struts2_day04--自定义拦截器_Struts2的标签库_表单标签
- android硬件返回
- 指针与C++基本原理
- 如何用sql语句复制一张表
- oracle怎么把一个用户下的表复制给另一个用户?(授予表权限)
- LeetCode 笔记系列 14 N-Queen II [思考的深度问题]