EMQX功能强大,但是帮助信息或者可用资料的确有限,遇到个问题,比较难找到处理的头绪,今天,我要记录的是,使用中出现EMQX宕机,但是呢,启动也启动不了。 今天记录的内容,就以操作EMQX 3.2.3的版本来说吧。
你可能看到有下面的信息:
[root@tkwh-kfcs-app3 emqx]# emqx start emqx v3.2.3 is started successfully!
但是呢,你查看状态,又会看到下面的内容:
[root@tkwh-kfcs-app3 emqx]# emqx_ctl status
Node 'emqx@10.95.200.13' not responding to pings
这个是什么情况呢?其实就是EMQX启动异常了,然后又shutdown了,看看日志,在/var/log/emqx下面的 erlang.log.1 文件里面可以找到些许的信息。
1 2 ===== 3 ===== LOGGING STARTED Fri Oct 25 10:55:38 CST 2019 4 ===== 5 Exec: /usr/lib/emqx/erts-10.3/bin/erlexec -boot /usr/lib/emqx/releases/v3.2.3/emqx -mode embedded -boot_var ERTS_LIB_DIR /usr/lib/emqx/erts-10.3/../lib -mnesia dir "/var/lib/emqx/mnesia/emqx@10.95.200.13" -config /var/lib/emqx/c onfigs/app.2019.10.25.10.55.38.config -args_file /var/lib/emqx/configs/vm.2019.10.25.10.55.38.args -vm_args /var/lib/emqx/configs/vm.2019.10.25.10.55.38.args -- console^M 6 Root: /usr/lib/emqx^M 7 /usr/lib/emqx^M 8 Erlang/OTP 21 [erts-10.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:128] [hipe]^M 9 ^M 10 2019-10-25 10:55:43.487 [info] event=server_setup_successfully driver=tcp socket="#Port<0.8>"^M 11 2019-10-25 10:55:43.488 [info] event=start^M 12 Starting emqx on node emqx@10.95.200.13^M 13 2019-10-25 10:55:43.562 [info] Ekka(Membership): Node emqx@10.95.200.22 up^M 14 2019-10-25 10:55:43.580 [notice] application: emqx^M 15 exited: {bad_return,^M 16 {{emqx_app,start,[normal,[]]},^M 17 {'EXIT',^M 18 {{badmatch,^M 19 {error,^M 20 {shutdown,^M 21 {failed_to_start_child,emqx_router_sup,^M 22 {shutdown,^M 23 {failed_to_start_child,helper,^M 24 {{badmatch,{error,{not_active_local,emqx_routing_node}}},^M 25 [{emqx_router_helper,init,1,^M 26 [{file,^M 27 "/emqx_temp/emqx_rel/_checkouts/emqx/src/emqx_router_helper.erl"},^M 28 {line,95}]},^M 29 {gen_server,init_it,2,^M 30 [{file,"gen_server.erl"},{line,374}]},^M 31 {gen_server,init_it,6,^M 32 [{file,"gen_server.erl"},{line,342}]},^M 33 {proc_lib,init_p_do_apply,3,^M 34 [{file,"proc_lib.erl"},{line,249}]}]}}}}}}},^M 35 [{emqx_app,start,2,^M 36 [{file,^M 37 "/emqx_temp/emqx_rel/_checkouts/emqx/src/emqx_app.erl"},^M 38 {line,32}]},^M 39 {application_master,start_it_old,4,^M 40 [{file,"application_master.erl"},{line,277}]}]}}}}^M 41 type: permanent^M 42 [os_mon] memory supervisor port (memsup): Erlang has closed^M 43 [os_mon] cpu supervisor port (cpu_sup): Erlang has closed^M 44 {"Kernel pid terminated",application_controller,"{application_start_failure,emqx,{bad_return,{{emqx_app,start,[normal,[]]},{'EXIT',{{badmatch,{error,{shutdown,{failed_to_start_child,emqx_router_sup,{shutdown,{failed_to_start_chi ld,helper,{{badmatch,{error,{not_active_local,emqx_routing_node}}},[{emqx_router_helper,init,1,[{file,"/emqx_temp/emqx_rel/_checkouts/emqx/src/emqx_router_helper.erl"},{line,95}]},{gen_server,init_it,2,[{file,"gen_server.erl "},{line,374}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,342}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]}}}}}}},[{emqx_app,start,2,[{file,"/emqx_temp/emqx_rel/_checkouts/emqx/src/emqx_app .erl"},{line,32}]},{application_master,start_it_old,4,[{file,"application_master.erl"},{line,277}]}]}}}}}"}^M^M 45 Kernel pid terminated (application_controller) ({application_start_failure,emqx,{bad_return,{{emqx_app,start,[normal,[]]},{'EXIT',{{badmatch,{error,{shutdown,{failed_to_start_child,emqx_router_sup,{sh^M^M 46 ^M^M 47 Crash dump is being written to: /var/log/emqx/crash.dump...done^M^M
什么意思呢?其实就是在安装路径的/var/lib/emqx下面有些异常数据,导致emqx启动时做数据同步时,出现错误,最后就宕机了。解决办法,就是将/var/lib/emqx下的数据清除掉,然后重新安装,当然,相关的配置,需要再次配置一下。
最后,再次将emqx安装一遍,就没有什么问题了。