AceElf - 拙杰

EMQX启动报错,Node ‘[email protected].1’ not responding to pings

安装版本

操作系统:Windows 11
EMQX版本:emqx-5.3.0-windows-amd64

问题描述

通过emqx start启动,无错误提示,但无法访问http://localhost:18083。

尝试执行emqx stop,提示:Node '[email protected].1' not responding to pings。

通过emqx console启动,输出日志及错误信息如下:

PS C:\EMQX\bin> .\emqx console
EMQX_LOG__CONSOLE_HANDLER__ENABLE [log.console.enable]: true
EMQX_NODE__DB_ROLE [node.role]: core
EMQX_NODE__DB_BACKEND [node.db_backend]: mnesia

C:\EMQX>C:\EMQX\erts-13.2.2.3\bin\erl.exe -mode embedded -boot "C:\EMQX\releases\5.3.0\start" -config "C:\EMQX\data\configs\app.2025.04.25.10.15.58.config" -args_file "C:\EMQX\data\configs\vm.2025.04.25.10.15.58.args" -mnesia dir 'c:/EMQX/data/mnesia/[email protected]'
2025-04-25T10:16:01.470000+08:00 [error] event=failed_to_setup_server driver=tcp reason="eaddrinuse"
2025-04-25T10:16:01.470000+08:00 [error] crasher: initial call: gen_rpc_server:init/1, pid: <0.2076.0>, registered_name: [], exit: {eaddrinuse,[{gen_statem,init_result,8,[{file,"gen_statem.erl"},{line,1058}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}, ancestors: [gen_rpc_sup,<0.2073.0>], message_queue_len: 0, messages: [], links: [<0.2074.0>], dictionary: [], trap_exit: false, status: running, heap_size: 1598, stack_size: 28, reductions: 2955; neighbours:
2025-04-25T10:16:01.470000+08:00 [error] Supervisor: {local,gen_rpc_sup}. Context: start_error. Reason: eaddrinuse. Offender: id=gen_rpc_server_tcp,pid=undefined.
2025-04-25T10:16:01.470000+08:00 [error] crasher: initial call: application_master:init/4, pid: <0.2072.0>, registered_name: [], exit: {{{shutdown,{failed_to_start_child,gen_rpc_server_tcp,eaddrinuse}},{gen_rpc_app,start,[normal,[]]}},[{application_master,init,4,[{file,"application_master.erl"},{line,142}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}, ancestors: [<0.2071.0>], message_queue_len: 1, messages: [{'EXIT',<0.2073.0>,normal}], links: [<0.2071.0>,<0.1941.0>], dictionary: [], trap_exit: true, status: running, heap_size: 233, stack_size: 28, reductions: 168; neighbours:
{"Kernel pid terminated",application_controller,"{application_start_failure,gen_rpc,{{shutdown,{failed_to_start_child,gen_rpc_server_tcp,eaddrinuse}},{gen_rpc_app,start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,gen_rpc,{{shutdown,{failed_to_start_child,gen_rpc_server_tcp,eaddrinuse}},{gen_rpc_app,start,[normal,[]]}}})

Crash dump is being written to: c:/EMQX/log/erl_crash.dump...done

问题定位

错误信息中有个关键词eaddrinuse,查询emqx文档发现是端口占用问题。EMQX 启动时会占用 7 个端口,检查每个端口的占用情况,发现是远程软件向日葵占用了5370端口,关闭占用进程,重新启动emqx成功。

参考文档

https://docs.emqx.com/zh/emqx/latest/faq/deployment.html

EMQX 启动时日志提示端口被占用(eaddrinuse)应该怎么办?
默认情况下,EMQX 启动时会占用 7 个端口,它们分别是:

1883,用于 MQTT over TCP 监听器,可通过配置修改。
8883,用于 MQTT over SSL/TLS 监听器,可通过配置修改。
8083,用于 MQTT over WebSocket 监听器,可通过配置修改。
8084,用于 MQTT over WSS (WebSocket over SSL) 监听器,可通过配置修改。
18083,HTTP API 服务的默认监听端口,Dashboard 功能也依赖于这个端口,可通过配置修改。
4370,用于 EMQX 分布式集群远程函数调用、Mnesia 数据同步等。即便没有组成集群,这个端口也会被默认占用。这个监听端口实际上应该是 BasePort (4370) + Offset,4370 固定无法修改,Offset 则由节点名称(Name@Host)中 Name 部分的数字后缀决定,没有数字后缀则默认为 0。例如 [email protected].1 的 Offset 为 0,[email protected].1 的 Offset 为 1。
5370,用于分担上一端口压力的集群 RPC 端口,主要用于节点间转发 MQTT 消息。与 4370 端口类似,即便没有组成集群,这个端口也会被默认占用,并且它实际上应该是 BasePort (5370) + Offset,5370 固定无法修改,Offset 则由节点名称(Name@Host)中 Name 部分的数字后缀决定,没有数字后缀则默认为 0。

启动成功日志

PS C:\EMQX\bin> .\emqx console
EMQX_LOG__CONSOLE_HANDLER__ENABLE [log.console.enable]: true
EMQX_NODE__DB_ROLE [node.role]: core
EMQX_NODE__DB_BACKEND [node.db_backend]: mnesia

C:\EMQX>C:\EMQX\erts-13.2.2.3\bin\erl.exe -mode embedded -boot "C:\EMQX\releases\5.3.0\start" -config "C:\EMQX\data\configs\app.2025.04.25.10.25.02.config" -args_file "C:\EMQX\data\configs\vm.2025.04.25.10.25.02.args" -mnesia dir 'c:/EMQX/data/mnesia/[email protected]'
Listener ssl:default on 0.0.0.0:8883 started.
Listener tcp:default on 0.0.0.0:1883 started.
Listener ws:default on 0.0.0.0:8083 started.
Listener wss:default on 0.0.0.0:8084 started.
Listener http:dashboard on :18083 started.
EMQX 5.3.0 is running now!
Eshell V13.2.2.3  (abort with ^G)

Copyright © 2023-2024 aceelf.com. All Rights Reserved.