如何验证单节点100w(百万)连接及验证MQTT发布订阅

错误报告

1、为了验证单节点百万连接,购买了阿里云 8 vCPU 32 GiB [ecs.g5ne.2xlarge] ECS(可支持175万连接数,网络收发包PPS 150万),关于配置,是按照安装与部署->系统调优参数配置的,不同之处是emqx.conf中修改的,如下:

# 前边默认定义省略(HOCON配置)
# ...
# Erlang 虚拟机参数
node.process_limit=2097152
node.max_ports=1048576
# EMQX 消息服务器参数
listener.tcp.external="0.0.0.0:1883"
listener.tcp.external.acceptors=64
listener.tcp.external.max_connections=1024000

2、然后同时启动14个客户端2vCPU 4GiB [ecs.c6e.large]ECS上下载的emqtt-bench,使用相同启动参数,如下:
./emqtt_bench sub -c 65000 -i 10 -h 172.31.113.218 -q 2 -t test/%i
3、最终结果,每个客户端都会有一万多连接失败

环境

  • EMQX 版本:5.0.12
  • 操作系统版本:centos 7.9




需要看一下服务器这边的 CPU 占用情况,是不是已经差不多满载了。

CPU未满载,内存,CPU都用了很少,正在测试单台连接是否会依然会出问题



可能是并发连接的问题,我一台一台的加,差不多当同时13个左右emqtt-bench客户端服务器同时打开(命令为:./emqtt_bench sub -c 65000 -i 10 -h 172.31.113.218 -q 2 -t test/%i),就开始出现连接失败的情况,少量客户端(10台机器以下)同时连接,没出问题

主要是你连接后还有订阅,订阅在集群下性能会弱于单节点,因为订阅信息还需要在集群内同步。