百万连接情况下,经常出现部分节点OOM

环境

  • EMQX 版本:5.7.2
  • 操作系统版本:centos7

重现此问题的步骤

客户端使用的是临时会话,超时时间10min,消息等级QoS 1
大约有上百万个长连接,消息发布、接收、频率小于每秒100条。单条消息低于1k

服务启动后,大约几小时后,时不时出现一个节点内存98%然后挂掉的情况。

使用carshdump viewer分析dump文件,结果如下:


一个进程占用了36G内存。

-------补充-------
后来发现了一些特征:当节点挂掉的时候,集群总的连接数大于2000万(活跃连接数只有400万左右)。
会话过期时间设置的是10min,按理总连接数和活跃连接数的比值,不应该这么大。
后台查询“客户端”信息,发现有一个节点的会话一直无法清除,导致这个节点上的会话一直累积。最终的结果是:

节点1上有16万个断开的会话
节点2上也是16万
节点3上有160万个,并且一直增加。进而导致OOM,节点挂掉
节点4上也是16个万

因此,一定是节点3上“清除过期会话”的任务出现了异常,麻烦提供帮助如何定位具体的问题。

节点3的内存情况如下:

预期行为

1、连接数并没有突然增加的情况下,内存不应该出现突出增加直至OOM。

这个得问大佬们才得,快去 github 上建个 issue(用英文会海少的团队会更快回复哦)

1 个赞

后续在这里跟踪