EMQ集群及压力测试总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianglingchuan/article/details/82219344

记录最后调研EMQ并发测试方法及问题总结。

一、单台服务器最高只能跑2W多一点

问题描述

 一直使用benchmark测试单台EMQ都没有超过3W链接数

解决方法

本身对TCP的机制了解不够深信,目前已知一个独立的外网IP只能提供最多6W的端口号,但每个TCP需要分配一个指定的端口号。所以理论上讲一台EMQ的服务器最多能跑6W链接数。
关于一直报”shutdown,eaddrnotavail”是因为测试的客户机端口号分配不足,并不是服务端无法分配端口号。

单台EMQ测试

1)、使用客户机数据5台
2)、最大链接数在76565
3)、异常情况是应用程序挂掉
erlang.log.4日志
===== ALIVE Sun Aug 26 14:56:54 CST 2018
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] memory supervisor port (memsup): Erlang has closed

二、Nginx代理只能跑几千个tcp链接

注:其中nginx和EMQ在同一台服务器上

问题描述

使用Nginx反向代理两台EMQ服务器每次都只能跑几千个链接数就提示错误。

解决方法

主要原因是过期时间设置太段,导致之前发起的请求在后面就过期了。
将Nginx(proxy_timeout)或Haproxy(timeout client)参数设置加大。
#Nginx
#proxy_timeout 24h;
#Haproxy
#timeout client 24h

Nginx反向代理测试

1)、使用客户机器数4台
2)、120最大链接数35183、47最大链接数是35191
3)、两台EMQ程序未出现异常情况,正常。
./emqtt_bench_sub -h qq.web.com -p 18830 -c 50000 -i 10 -t bench/%i -q 2

三、报错总结

conneted: 138
client 49863 EXIT: {shutdown,eaddrnotavail}
#分配不了端口

[error] [Client <0.7267.0>] CONNACK Timeout!
client 7590 EXIT: {shutdown,connack_timeout}
#链接超时

conneted: 191
client 49810 EXIT: {shutdown,econnrefused}
#链接被拒绝

四、使用阿里云的负载均衡 SLB测试

SLB根据支持不同的链数据有不同的收费标准,如果是单独两台EM做负载,理论上跑10W以上的链接数是成立的。

五、查看端口号使用命令

#查看端口号使用命令
netstat -npta | grep <端口号>
#查看端口号使用数量
netstat -npta |grep <端口号> | wc -l

猜你喜欢

转载自blog.csdn.net/xianglingchuan/article/details/82219344
今日推荐