emqx版本为开源版4.4.3,连接客户端50个左右,在运行一段时间后,服务假死了,而且重连不上,emqx错误日志也停止输出了,重启emqx服务后客户端均正常连接
服务器cpu,内存虽然不足,但是能正常运行,重启前后内存占用无明显差异,
出现问题的时候:
- 检查 emqx 进程是否被系统挂起。
- 检查日志:
- emqx 最后的日志是什么
- 有没有 warning 日志。
- 抓包看 MQTT 报文的交互情况。
- 进入 erlang console 调查:
- 使用
emqx remote_console
命登录 erlang console, - 然后使用
observer_cli:start().
命令打开监控工具, - 然后输入
mq
并回车,按照进程邮箱大小排序,检查有没有邮箱堆积的进程。
- 使用
1 个赞
谢谢回复~
服务的进程是存在的,查看emqx的error日志,只有 Parse failed for function_clause类似日志,而且在异常时间点之后,error日志再无继续输出,后续重启之后,各个客户端均正常连接,也正常收发消息,而且服务器内存在重启前后没有明显变化。
附上对应error日志截图
后续应该还能再出现这个情况,希望能给一些后续排查的建议
1.抓包
2.mqttx工具进行客户端连接
3.emqx remote_console命令使用(文档上好像没有提供,能有一些细节吗)
从你的描述上来看,可能 emqx 是“真死” 了。
- 看看 emqx/logs 目录下面有没有 crash_dump 文件
- 然后检查一下 /var/logs/message 里有没有系统日志,如果是内存过高被系统杀死这种情况会在系统的日志里记录。