环境
- 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。