2025/5/11
Unix OS ターミナルからCtrl + Cを送ると子プロセスもまとめて死ぬ動作の理由
【Rust】スレッド操作に慣れる
【Rust】スマートポインタに慣れる
【Rust】プロセスの監視と再起動
部品1:1プロセス監視君
役割:指定プロセスを常に動作させ続ける
詳細:1つのプロセスをこちらから終了させるまでは常に動作させ続ける
ざっくりイメージ
こちらから明示的に"終了"としない限りは動作させ続ける
(プロセスが正常終了しようが、システムに殺されようが、ユーザーに中断されようが同じ)
プロセスが何回実行しても上手く動かず、短時間に何度もプロセスを起動してしまう状況を避ける
プロセスの終了理由は都度ログに記録する
プロセスが生きてはいるが、異常な状態で常に動き続けてる場合も検知して対応する
注意点
プロセスのリソース使用率の注意
ゾンビプロセス化の注意
標準出力/入力がパンクすることの注意
プロセスの異常候補
ユーザーが中断する
システムがkillする
プロセスのロジック関連でクラッシュする
プロセスがスタックしてる(クラッシュはしてない)
ずっと正常ルートの挙動をしてない
実装の思考
ロジックの内容についてはプロセスしか異常な状態か否かが判断できない。
つまり、外側(監視する側)は「異常の場合はここに連絡して」と言っても、内側が連絡しない場合は異常とは認めれない。
これはhealth checkとかそんな感じよな。内側が200返してるなら異常ではない。
なお、スタックの場合は応答すらできない状況なので、内側は外側に「~秒間応答ないなら異常です」 と先に報告しておくと良い。
監視がDropする時はプロセスも一緒に終了するようにしておくこと。
孤児プロセスになることを必ず防ぐ。
https://www.ymotongpoo.com/works/lyse-ja/ja/12_concurrency.html
https://www.ymotongpoo.com/works/lyse-ja/ja/20_wsts.html
https://supervisord.org/
リペアレンティング
Unix OS ターミナルからCtrl + Cを送ると子プロセスもまとめて死ぬ動作の理由
Unix OSで孤児プロセスがinitプロセス配下に加えられる動作を「リペアレンティング」という
Unix OS シグナル一覧
スレッドとスタックの動作を研究
rust usizeはポインタのサイズのこと(符号なし整数型)
【idea】cooklife - 料理してみよう