同时在线200台设备,EMQ就承受不住,client就自动断开了

环境

  • EMQX 版本:5.0
  • 操作系统版本:【8vCPUs | 8GB | c1.2xlarge CentOS7.0 64位】带宽:6M
    ——问题描述:
    目前我们使用一个MqttClient连接“EMQX”服务,实例化了3000台设备,每台设备有4个主题,经常在线的有200台左右。
    现在MqttClient断开非常频繁,一直报错:msg:socket_error,mfa:emgx_connection:handle info/2, line: 925, peername:XX.138.243.XX:57228,clientid:KLM0TT-00001,reason: timeout
    msq:alarm is deactivated,mfa:emax alarm:do actions3,line:424,ame:<<"conn congestion/KLMOTT-00001/SYTrition’>>
    请技术专家看看,是我们的EMQX软件的配置问题,还是EMQX软件支撑不了这么多设备高频次发送主题数据?

可能与网络和主机的配置有关, 我的阿里ecs 2C, 4G, 1M(bandwith), 都可以练级7000多。

专家好!有EMQX优化配置的截图吗?我们主要想解决因设备多,主题多,每秒并发量大的问题,给点具体可以参考调整的内容就行,谢谢!

这个错误的原因是,EMQX 给这个客户端下发消息时,存在严重的阻塞了。调查思路时:

  1. 检查下下这个 客户端ID 是谁,评估下大概每秒有多少消息,
  2. 检查下客户端代码在接收处理过程中是否是存在 耗时的同步操作,阻塞了消息接收。

您分析的很对,从报错信息上看也是阻塞了消息,阻塞消息后还会造成client连接断开,目前我们已经把设备拆分到多个MqttClient连接实例上了,暂时还没报错。估计和现场多个人集中测试有关。您看关于这个问题,还能在EMQX软件配置上调优吗?

老师,针对阻塞问题,您有哪些优化的建议?