emqx 版本5.0.17
部署环境 linux,4节点集群
发现EMQX被客户端不停的重连,内存一直猛涨,直到对方停掉客户端连接后,内存也没法释放,请问是什么原因?
这是后台报日志信息
我看出现好多msg: puback_packetId_not_found,也不知道是否是由于这个原因导致?但目前日志也一直输出Mnesia overload,目前内存没办法下降,请问如何排查是哪个客户端导致或者有什么办法可以释放内存呢?
emqx 版本5.0.17
部署环境 linux,4节点集群
发现EMQX被客户端不停的重连,内存一直猛涨,直到对方停掉客户端连接后,内存也没法释放,请问是什么原因?
这是后台报日志信息
我看出现好多msg: puback_packetId_not_found,也不知道是否是由于这个原因导致?但目前日志也一直输出Mnesia overload,目前内存没办法下降,请问如何排查是哪个客户端导致或者有什么办法可以释放内存呢?
在线等待回复。。
从 observe_cli 看,是 Process 大概占用了 7G 的内存导致的过高。排查下
mq回车
以消息对 Process 排序,观察是否有消息堆积1、连接数不多,只有1473个连接
mq回车
,没看出有消息堆积;感觉有进程卡住了。
怎么 1473 个客户端,居然有 52171 个进程…
你用 observer cli 输入 M 回车看看
你在 emqx 还开了什么功能 ?想看看会一直 mnesia log overload
你在 dashboard 上关开一下保留消息,试试。
看起来是保留消息有点资源没释放。
已试过关闭保留消息后再启用,发现还是没法释放资源,还有其它办法不?
在刚才执行 observer cli 的 shell 里面执行一下这个函数 。
lists:foldl(
fun(Pid, Acc) ->
case erlang:process_info(Pid, current_function) of
{current_function,{qlc, wait_for_request,3}} ->
catch erlang:exit(Pid, kill),
Acc + 1;
_ -> Acc
end end, 0, erlang:processes()).
你好,我在observer cli 里没法输入shell 的函数,请问按哪个健可以输入这个函数呢?
这是,这说明已经回收掉了断线重连的那 50710 个进程。
再打开 observer cli 界面,我看看
这个进程数看起来是正常了。
其它3 个节点是什么情况?
进程数是多少,截个图看看。所有节点都要执行上面这个函数的。
4个节点执行上面的函数全部释放了,感谢,对于这一块。不知可否在后面的版本做到自动释放呢?
retainer 这块从 5.0 到 5.3 经过一轮重构,上面这个问题还是没有找到真正的原因。
只是临时做到释放。已经安排人调查原因了。
如何临时释放?
可以细看一下上面的过程,里面我给了一个函数,可以临时释放。
但是一定要细看过程,确定你的情况是和他的一样的才有效。