プロセス監視の仕組みを作る必要がある
#degdet
1プロセス監視君
役割:指定プロセスを常に動作させ続ける
詳細:1つのプロセスをこちらから終了させるまでは常に動作させ続ける
ざっくりイメージ
こちらから明示的に"終了"としない限りは動作させ続ける
(プロセスが正常終了しようが、システムに殺されようが、ユーザーに中断されようが同じ)
プロセスが何回実行しても上手く動かず、短時間に何度もプロセスを起動してしまう状況を避ける
プロセスの終了理由は都度ログに記録する
プロセスが生きてはいるが、異常な状態で常に動き続けてる場合も検知して対応する
注意点
プロセスのリソース使用率の注意
ゾンビプロセス化の注意
標準出力/入力がパンクすることの注意
プロセスの異常候補
ユーザーが中断する
システムがkillする
プロセスのロジック関連でクラッシュする
プロセスがスタックしてる(クラッシュはしてない)
ずっと正常ルートの挙動をしてない
実装の思考
ロジックの内容についてはプロセスしか異常な状態か否かが判断できない。
つまり、外側(監視する側)は「異常の場合はここに連絡して」と言っても、内側が連絡しない場合は異常とは認めれない。
これはhealth checkとかそんな感じよな。内側が200返してるなら異常ではない。
なお、スタックの場合は応答すらできない状況なので、内側は外側に「~秒間応答ないなら異常です」 と先に報告しておくと良い。
監視がDropする時はプロセスも一緒に終了するようにしておくこと。
孤児プロセスになることを必ず防ぐ。