錯誤信息 2021-12-13 16:50:00.456 [info] <0.94.0>@poolboy_sup:init:15 poolboy_sup module start {mongo_worker,#{db => "cwhy001_dmwl_601_game",host => "192.168.50.5",passwd => [],port => 3307,user => []}} 2021-12-13 16:50:00.456 [info] <0.95.0>@poolboy:do_init:173 poolboy module start {[{name,{local,mongo_pool_300602}},{worker_module,mongo_worker},{size,20},{max_overflow,20}], #{db => "cwhy001_dmwl_602_game",host => "192.168.50.5",passwd => [],port => 3307,user => []}} 2021-12-13 16:50:00.457 [info] <0.96.0>@poolboy_sup:init:15 poolboy_sup module start {mongo_worker,#{db => "cwhy001_dmwl_602_game",host => "192.168.50.5",passwd => [],port => 3307,user => []}} 2021-12-13 16:50:00.467 [info] <0.91.0>@poolboy:recreate_worker:572 <0.92.0>, <0.91.0>, null 2021-12-13 16:50:00.470 [info] <0.159.0>@mongo_worker:do_init:54 mongo_worker module start #{db => "cwhy001_cross_dmwl_601_game",host => "192.168.50.8",passwd => [],port => 3307,user => []} 2021-12-13 16:50:00.472 [info] <0.160.0>@mc_worker:do_init:55 mc_worker module start [{"192.168.50.8",3307,{conn_state,unsafe,master,<<"cwhy001_cross_dmwl_601_game">>}},[]] 2021-12-13 16:50:00.472 [info] <0.91.0>@poolboy:do_info:388 null, <0.159.0> 2021-12-13 16:50:00.472 [info] <0.159.0>@mongo_worker:handle_call:122 2021-12-13 16:50:00.480 [info] <0.159.0>@mongo_worker:do_terminate:289 mongo_worker module stop reason:shutdown 2021-12-13 16:50:00.480 [warning] <0.159.0>@mongo_worker:do_terminate:296 shutdown 2021-12-13 16:50:00.480 [info] <0.160.0>@mc_worker:do_terminate:249 mc_worker module stop reason:shutdown
問題分析
- mongo進程主動的shutdown,只有supervisor監控進程會主動的斷開連接
- 可以看出,當前的worker進程沒有被啓動導致,爲什麼會沒有啓動mongo進程呢
解決步驟
- 先反編譯poolboy.beam文件 {ok, {, [{abstract_code, {, Ac}}]}} = beam_lib:chunks(code:which(a), [abstract_code]). io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(Ac))]).
也是會報錯:
問題確認
-
代碼和beam文件不一致導致,poolboy進程數爲0了,導致了大量的創建mongo進程