記一次mongo連接timeout問題,導致服務器關閉不了,大量的進行mongo連接超時

錯誤信息 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進程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章