怎样对 EMQX 进行压力测试
在阿里云香港区,开几台 2 核 4G 的抢占式实例(旧称竞价实例)的机器,安装 docker,然后用 emqx-bench 压测。
docker run -it emqx/emqtt-bench:latest conn -c 30000 -i 10 -h IP-ADDRESS -p 1883
docker run: 运行一个 Docker 容器。 -it: 以交互模式运行容器并连接终端。 emqx/emqtt-bench:latest: 使用 EMQX 提供的 emqtt-bench 工具的最新版本镜像。 conn: 指定操作类型,这里是 连接测试。 -c 30000: 指定客户端数量,这里是模拟 30,000 个客户端连接。 -i 10: 表示每个客户端的连接间隔时间为 10 毫秒。 -h IP-ADDRESS: 指定 MQTT 服务器的主机地址(IP 地址)。 -p 1883: 指定 MQTT 服务器的端口号。
-i 10 指定客户端之间的连接时间间隔为 10 毫秒(ms),即每模拟一个客户端,会等待 10 毫秒后再模拟下一个客户端连接。这对于分布式压力测试非常重要,因为它可以防止一次性创建大量连接而导致服务器瞬间过载。也就是每秒会有 100 个客户端连接到服务器。
在压测过程中,可以通过查看服务器的 CPU 使用率、内存使用率、网络带宽等指标来判断服务器的性能是否达到预期。
一台服务器大概可以跑到 2.8 万连接,再多就会出现连接失败的情况。
一个 EMQX v5.7.1 开源版的节点大约可以跑到 8 万连接,再多就会出现连接失败的情况。
一个集群最多可以建3个节点,所以一个集群最多可以跑到 24 万连接。以下面官网给的数据要高很多。