MQTT服务端(vert.x mqtt broker)连接总数和并发测试

由于受本地测试环境系统配置、服务器资源、带宽等因素影响,测试结果仅做参考。此次测试主要提供方法思路!

对于结论的分析有错误的地方恳请大家积极反馈,以免误人子弟!

MQTT连接总量测试

测试环境配置说明

环境

备注

系统

配置

客户端-1

腾讯云服务器-1

Linux

4 核 16 GB

10 Mbps

客户端-2

腾讯云服务器-2

Linux

4 核 16 GB

10 Mbps

客户端-3

本地电脑

Windows

i5-7500 8G

实际带宽未知

服务端

腾讯云服务器-3

Linux

4核16G

5Mbps

测试方法

在三台客户端服务器上分别运行脚本。由于本次测试针对连接总量,对于连接发起时间无有要求。

测试结果说明及分析

  1. 该项测试仅针对MQTT连接,不涉及其他服务(数据库、业务服务模块等);
  2. 单台客户端-腾讯云服务器发送TCP连接数上限为6300左右,该项值受限于系统(Linux);
  3. 本地电脑发送TCP连接数暂未达到上限。上限值取决于系统(Windows),但受制于公司带宽分配问题,目前可发送8000左右连接;
  4. 单台服务端-腾讯云服务器可接受的TCP受限于根据服务器硬件默认设置的最佳值。目前4核8G服务器默认连接数为65000。受linux系统可发送TCP连接数、本地电脑Windows系统和实际带宽限制,测试时最大仅达到16000个连接;
  5. 上述测试条件下,服务端CPU、内存、宽带均消耗很少,未达性能瓶颈;

MQTT连接并发连接测试

测试方法

本次测试使用Jmeter对MQTT服务端进行并发压测。

1,下载Jmeter-MQTT测试需要的jar包,下载地址:mqtt-xmeter-1.0.1-jar-with-dependencies.jar

 2,将下载的jar文件放到JMeter安装主目录的lib/ext下,重启JMeter,即可看到关于MQTT的取样器。

MQTT Connect:连接操作取样器;

MQTT DisConnect:断开连接操作取样器;

MQTT Pub Sampler:消息发布取样器;

MQTT Sub Sampler:消息订阅取样器;

3,此处仅测试MQTT Connect,设置如下:

  • Server name or IP: 指向被测MQTT服务器地址。【注】为灵活起见,属性值都可以引用JMeter的系统或自定义变量。
  • Port number: 通常TCP连接的端口时1883, SSL连接则是8883。请参照服务器的具体配置。
  • Timeout(s): 连接超时设置,以秒为单位。
  • Protocols: 客户端与服务器通过SSL加密通道连接时,可以选择单向或者双向认证(Dual)。双向认证时,您还需要指定相应的信任秘钥库(Trust Key Store), 客户端证书,以及对应的文件保护密码(Secret)。这些文件可以通过服务器的证书配置转化得到。例如,对于EMQ的安装部署,<emqttd_home>/etc/cert下就存放了自签证的CA,服务器及客户端证书,参考下面的命令就可以生成插件所需的.jks, .p12文件,secret自行指定即可。
  • User authentication: 如果服务器配置了用户认证,您需要提供相应的用户名和口令。
  • ClientId prefix: 标识客户端的固定前缀,每个连接(虚拟用户)再添加一个uuid串,整个作为客户标识。
  • Keep alive(s): 心跳信号发送间隔。例如,300表示客户端每隔300秒向服务器发出ping请求,以保持连接活跃。
  • Connection keep time(s): 连接建立后,保持该连接的时长。例如,1800表示1800秒之后连接将被关闭,即使一直发送心跳信号。
  • Connect attempt max: 第一次连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。
  • Reconnect attempt max: 后继连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

此处关于Jmeter的基本操作不再赘述。

测试结果

线程数

耗时

失败率

CPU消耗

内存消耗

测试次数

1000

4s

0.00%

1%-10%

可忽略

3

1300

9s

1.38%

10%-15%

可忽略

3

1500

4s

2.48%

10%-20%

可忽略

5

结果说明及分析

  1. 仅对连接并发数,不涉及其他服务(数据库、业务服务模块等)条件下,仅消耗CPU,不消耗内存;
  2. 1000以内的并发数于现有服务器配置(4核16G)性能无影响;
  3. 超过1000的并发后,由于本地测试环境限制,会出现部分连接失败情况。连接失败率和并发数成正比。失败率增加但CPU消耗远未达上限,证明该连接失败是由测试条件限制造成,仍未达到服务器并发连接数上限;
  4. 该测试仅说明目前服务器配置支撑1500以内的并发无压力,但并发上限未知;
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值