如何排查解决emqx内存占用过高

EMQX 版本:5.1.5(单机)
操作系统版本:centos 7.9.2009

由于服务器内存报警,排查后发现是emqx的内存占用过高,于是手动重启emqx,并观察了一段时间后,内存就会缓慢升高,达到10G以上。最终由于内存不足进程会被杀死。

看着是,每个连接占用了很多内存(最多的到 10M 也太不正常了),所以 3000 连接占用了快 9 GB。
方便分享下你所有的配置的?主要的场景、消息的大小什么的吗?

配置文件 emqx.conf:
node {
name = “emqx@127.0.0.1
cookie = “emqxsecretcookie”
data_dir = “/var/lib/emqx”
}

cluster {
name = emqxcl
discovery_strategy = manual
}

dashboard {
listeners.http {
bind = 18083
}
}

mqtt {
mqueue_store_qos0 = false
max_mqueue_len = infinity
}

场景:主要是用于学校的一些物联网设备,例如水控、电控等等
消息大小:大部分的消息都不会超过1KB,极少数消息会带有某些图片的base64编码内容

规则引擎、桥接这些用得多吗? 图片消息大概会有多少和多大?

规则引擎、桥接都没用到,就是很简单的使用而已。
图片消息很少,每天3000条左右,每条图片消息10K以内

环境还在么?在的话我们可以通过 heeejianbo@gmail.com 约个线上会议一起看看

内存高的时候先执行一下

./bin/emqx eval "recon:bin_leak(10)."

看看会不会变少,虽然我猜大概率不会。
node.global_gc_interval 默认就是15m 分钟,如果有效果,应该15分钟一个周期内存就会回落一下。

1 个赞