MQTT连接被重置,且重连一直失败.

环境信息

EMQX版本: 4.2.5

操作系统及: CentOS 7

问题描述

1. 前置条件

emqx为两个节点的集群, 使用的插件主要是emqx_auth_http. 除了一个微服务A处理emqx_auth_http插件过来的auth和acl消息,还有一个微服务B订阅所有业务Topic.

其中微服务A有8个节点,4个只处理auth消息,领外个只处理acl消息;微服务B有三个节点,每个节点有一个MQTT客户端通过11883端口连接EMQX, 通过共享订阅接收所有的业务消息, 订阅QoS为1.

整体并发量较高, auth消息一个节点并发在450,acl消息一个节点并发在350左右

2. 现象

运行较长一段时间后,发现微服务B的MQTT客户端连接被重置,断开连接,且一直重连不上, 后续把emqx前置负载关掉一段时间,重连才成功. 查看emqx日志发现,在连接首次被重置前几分钟,大量出现以下日志

3. 补充信息

  1. 问题出现半个月前,在emqx_auth_http插件中添加了一项配置:auth.http.pool_size=1024
  2. 问题出现前十分钟内,消息并发量有部分提升

疑问

  1. 这种现象出现的原因可能是什么? 希望能稍微详细一些.

别把 pool_size 设置得太大。推荐为 cpu 核数。

gun_error 有可能是 emqx 的 bug,也有可能是你的 http server 不支持太大的并发导致emqx 把 stream 删除了(状态变了)

4.2 已于 2022 年 4 月 20 号过了维护周期了,推荐尽快升级:

那这个gun error 跟我MQTT客户端被踢掉线有关系吗

完全没有