EMQX宕机了,服务无法启动

emqx服务启动后运行了10多天,今天用了一段时间后突然宕机了,无法再次启动,日志文件也没有错误信息


EMQX:5.6.1
系统:centos 7

使用emqx start能正常启动,systemctl start emqx无法启动

可能是系统权限或者 ulimit 导致的启动失败,emqx 日志里没有看到有用的信息,你可以看看 journalctl 的日志。

我发现了导致emqx服务宕机的原因,就是我在服务器上启动项目连接emqx的时候,会导致emqx服务自动宕机,但是我再本地启动项目连接emqx是正常的,emqx服务部署再centos7,本地连接的也是服务器上的


journalctl日志,我用emqx start启动之后,过一会儿服务就停了

宕机原因调查:你看看 emqx 的 log 目录下有没有 crash.dump 文件,没有的话需要看看系统日志 /var/log/message 里有没有 oom 相关的记录。

systemctl 启动失败的原因我还没有看出来。可以试试看启动失败之后会不会在 emqx 的 log/erlang.log.* 里留下什么日志。

服务器 cpu 飙升会引起 emqx 服务宕机吗?

有一个erl_crash.dump文件,/var/log/message没有看到oom的记录
erl_crash.dump文件
erl_crash.zip (297.4 KB)
erlang.log.*文件


好像找到问题了,我之前在这里创建了一条webhook,后来我把项目中对应的api删了,这条webhook记录没删,只是停用了,今天我把webhook中的数据删了,就没出现emqx服务宕机的问题了,这是个bug吗?

webhook 会缓存发送失败的消息,如果 emqx 内存增长到一定程度可能会被系统杀掉。
你的 erlang.log.* 文件里:

  • 有一次启动失败记录:port 4370 is in use 是说这个端口已经被其他程序占用了,大概率是 emqx 已经有一个实例(进程)在运行了。
  • 还有一次被外部程序或认为关闭的记录:Received terminate signal

erl_crash.dump 文件是 4月19号的,emqx 启动失败,可能已经没有什么参考意义了。

webhook我是已经停用了,而且项目是刚启动,emqx的服务就停止了,现在我把webhook删了,是没有出现emqx服务宕机的问题了