使用haproxy负载均衡EMQX集群

EMQX 版本

[5.7.2 (Open Source)]

EMQX 安装部署方式

emqx-5.7.2-el8-amd64.tar.gz

EMQX 集群情况

使用 3 个节点组成集群

服务器(运行 EMQX 的机器)硬件配置

16核 32GB,CPU 型号:Intel(R) Xeon(R) Platinum 8378C CPU @ 2.80GHz

服务器操作系统和平台

huawei cloud centos8 x86_64

服务端参数优化情况

压力机硬件配置

同上

压力机使用的测试工具

emqtt_bench

压力机参数优化情况

sysctl -w net.ipv4.ip_local_port_range=“1024 65535”
echo 1000000 > /proc/sys/fs/nr_open
ulimit -n 100000

测试场景

共使用 6 台压力机,每台以 200/s 的速率发起 MQTT over TCP 连接,经过 LB(HAproxy, 16核32G)接入到 EMQX,最终每台压力机都将建立 50k 连接

具体问题

连接数量达到 130k 后,无法继续接入新的连接,EMQX 没有异常日志,emqtt_benchclient(55574): connect error - timeout
client(80574): connect error - timeout
client(52449): connect error - timeout
client(89949): connect error - timeout
client(58699): connect error - timeout
client(96199): connect error - timeout
client(77449): EXIT for {shutdown,timeout}
client(86824): EXIT for {shutdown,timeout}
client(99324): EXIT for {shutdown,timeout}
client(93074): EXIT for {shutdown,timeout}
client(55574): EXIT for {shutdown,timeout}
client(80574): EXIT for {shutdown,timeout}
client(52449): EXIT for {shutdown,timeout}
client(89949): EXIT for {shutdown,timeout}
client(58699): EXIT for {shutdown,timeout}
client(96199): EXIT for {shutdown,timeout}

看不出来什么问题,看看你的 haproxy 有什么异常日志么

没有异常日志,我的并发连接速度控制在200/s,总连接数超过140,000就会报 shutdown timeout


试试把 haproxy 去掉,直连看看,先排除一个 haproxy 没有做优化导致连不上的原因。

如果没有haproxy,那最大连接数会超过1,000,000我觉得不是emqx集群配置或者系统设置方面的问题。

没有遇到过这种情况 ,也不是 haproxy 专家…

我用nginx配置的集群。到5200左右就连接不上 了。