supervisorのメッセージキューが溜まる つい先日, supervisorのメッセージキューが溜まり続けていたので教訓として残す. start_child, terminate_child, etc...の実装について start_childを例に取る. 見ての通り, supervisorはgen_server behaviourで定義されており, start_childは内部的にはgen_server:call/3 (timeout: infinity) が呼ばれる. その後, ここでChildSpecに則り, 起動処理を行う. 起動処理は単純でerlang:apply/3の結果を見て, 成功していればChildSpecを保存・管理する. gen_serverの起動処理 子の起動処理として以下の関数をここでは以下を想定しよう. -module(hoge_server). -beha