EMQX版本:
$ bin/emqx_ctl status
Node ‘emqx@127.0.0.1’ 5.7.0 is started
操作系统版本:
$ cat /etc/os-release
PRETTY_NAME=“Ubuntu 22.04.3 LTS”
正常运行一段时间(十几到20多天)就退出,在erlang.log看到有如下信息:
===== Sun Jun 30 22:19:36 CST 2024
free(): double free detected in tcache 2
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] memory supervisor port (memsup): Erlang has closed
请问是可能是什么原因?
稍等,我们这边查下这个是哪里来的
free(): double free detected in tcache 2
你好请问 你的 EMQX 跑的什么业务?
有没有 开启 persistent storage? 或用到 QUIC ? jq, SASL auth等?
平台是 x86_64 还是 aarm64?
请勾选
- QUIC transport
- encode/decode json
- auth with SASL
- persistent session on disk
- compress/decompress with snappy
- jq rules
- TLS.
- password auth
抱歉这段时间忙别的,没有即时回复。
目前的业务就是由服务器向物联网设备发送指令,以及收集设备上报的信息,目前并没有铺开,访问量很少。大致并发的连接数就几个。
没有开启persistent storage
没有用到QUIC,jq这些。
客户端认证使用了内置数据库(直接指定用户名密码)以及外部的MongoDB
x86_64平台。
你好是否可以提供一份配置?
另外确认下,你的回复中引用了 “SASL auth” 是否意味着你们使用了 SASL 验证客户端 和 mongodb 基于 sasl scram 的验证机制?
问题能否重现?
对“SASL auth"的引用是误操作,抱歉。实际上我们都并不清楚SASL验证概念是什么。
“mongodb 基于 sasl scram 的验证机制”,应该就是指使用mongodb进行密码认证吧?我们是用了mongodb进行密码认证的。
请问相关配置文件怎么获取?目前的emqx.conf很简单,只有下面几个配置:
node {
name = “emqx@127.0.0.1”
cookie = “emqxsecretcookie”
data_dir = “data”
process_limit = 2097152
max_ports = 2097152
}
cluster {
name = emqxcl
discovery_strategy = manual
}
log {
}
dashboard {
listeners.http {
bind = 18083
}
}
关于重现,这个得看运气。。目前遇到过两次异常退出,间隔时长十几到二十几天,erlang.log的错误信息相同,“double free detected in tcache 2”
老师们,这个问题可能是因为使用外部的mongodb数据库进行身份认证导致的吗?
可否上传下列命令运行结果?
cat /proc/`emqx pid`/maps | grep *.so