EMQ集群及压力测试总结

记录最后调研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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
集成Spring Boot和EMQ X集群的具体逻辑可以包括以下几个步骤: 1. 添加依赖:首先,确保你的Spring Boot项目已经添加了EMQ X相关的依赖。这通常通过在项目的`pom.xml`文件中添加相应的依赖项来完成。 2. 配置连接:在Spring Boot项目中,你需要配置与EMQ X集群的连接。这通常涉及设置MQ连接参数,如主机名、端口、用户名和密码等。这些配置通常在项目的`application.properties`或`application.yml`文件中进行。 3. 创建消息生产者:在Spring Boot项目中,你需要创建一个消息生产者来将消息发送到EMQ X集群。这可以通过使用Spring的`MessageProducer`接口来实现。你可以使用Spring的AMQP(高级消息队列协议)支持来与EMQ X通信。 4. 创建消息接收者:在Spring Boot项目中,你需要创建一个消息接收者来从EMQ X集群接收消息。这可以通过实现`MessageListener`接口并注册监听器来实现。你可以在接收者中处理接收到的消息,并将其传递给应用程序的其他部分。 5. 集成负载均衡:如果你的EMQ X集群有多个节点,你可能需要集成负载均衡来确保消息被均匀地分发到各个节点上。你可以使用Spring Boot的负载均衡功能来实现这一点,例如使用`Ribbon`库来提供负载均衡支持。 6. 测试集成:完成上述步骤后,你可以通过测试来验证Spring Boot与EMQ X集群的集成是否正常工作。你可以发送消息并验证它们是否被正确地接收和处理。 总的来说,集成Spring Boot和EMQ X集群涉及配置连接、创建生产者和接收者、集成负载均衡以及进行测试。具体的实现细节可能因你的项目结构和需求而有所不同,但上述步骤提供了一个基本的框架来指导你进行集成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值