数据发送频率过快时连接会被踢掉收不到回复心跳

环境信息

  • EMQ X 版本:4.2
  • 操作系统及版本:centos7.9
  • 其他

问题描述

当建立8到9个连接时候,每个连接启动40个并发线程每秒定时发送数据,这个时候连接会被慢慢踢掉(Dashboard 观察),据观察应该是没有收到emqx心跳回复。。。单个连接并发量有限制吗?

配置文件及日志

具体是需要看客户端实现,erlang客户端测试,QOS1大概在3000/s QOS0大概在8000/s, QOS2大概在1000/s

是不是和消费端有关?比如我单个tcp发送信息过快,消费端消费不过来,会不会踢掉生产端的tcp连接?我能关掉消费端(默认消息丢弃),来排查这个问题吗?

可以,EMQX 有内存保护机制,单个客户端消息堆积比较多,就被服务器强制退出, 详细请查看https://docs.emqx.cn/broker/v4.3/configuration/configuration.html#zone-external-force-shutdown-policy

还请问clean_session = true 和false的区别,是不是为true的话,会话断开就不建立飞行窗口和消息存储队列,broker接收到的消息直接丢弃?否则就申请这些队列的内存区存储再分发给消费端

clean_session=false情况下,tcp连接断开后,服务器会保持session一段时间,可以接收消息等,
等到客户端登录,还是可以接收到断开后消息。
clean_session=true情况下,tcp连接断开后,session也销毁了

session销毁或者没人订阅的情况下,生产者上传的消息是怎样处理的?直接丢弃?还会存飞行队列和存储队列吗(这两个队列还会存在吗)

直接丢弃