アプリケーションの健康チェック
-
02-10-2019 - |
質問
プロセスの健康をチェックする方法が何であるかを知りたいと思います。システムで10000プロセスが実行されており、これらのプロセスのいずれかがダウンした場合に備えて、プロセスを実行する必要があることを確認する必要があります。
解決
プロセスID(PID)を使用して、プロセスがまだ生きているか、定期的に死んでいるかを投票します。そして、それが死んでいるなら、それを復活させてください。
ただし、10000プロセスがある場合は、おそらく最初にOSのプロセス制限に達するでしょう。そもそもそれほど多くのプロセスを必要としないように、プログラムを再設計することをお勧めします。
他のヒント
下落する再輸送プロセスは、通常、プログラムをexec()に具体的にランチャープログラムを導入し、シグルドが子供のプロセスが終了したことを示すのを待つことによって処理されます。
ブートタイムアプリケーション(サーバーなど)の場合 新興 これを自動的に行うことができます。
他の人は、アプリケーションが既に存在することを指摘していますが(明確な理由がない限り、実際に使用する必要があります)、カスタムソリューションのランダムなアイデアを捨てます。
すべてを制御する場合 N
その後、プロセスはそれらすべてに1つの共有メモリ領域を持つようにします N
大きくビット(したがって、10000プロセス〜1kb、悪くない)。各プロセスを開始するときに数字を与えます、 i
, 、0からNまでの範囲 T
秒には、各プロセスがビットになります i
1までの共有メモリでは、監視プロセスはすべてを確認できます N
ビットはすべて1です k*T
秒、プロセスでそれらすべてを0にリセットします。
これはまだo(n)であり、これは避けられませんが、プリミティブはすべて非常に高速であり、OSスレッドの制限まで正常にスケーリングする必要があります。
取得するための別のアイデア i
PIDを使用するだけですが、共有メモリは大きくする必要があります(おそらくまだ大丈夫です。たとえば、Linux PID範囲は小さいです)。
呼ばれるユーティリティがあります モニット あなたが探していることをします。しかし、それはLinuxの特定の重要なプロセスのためです。すべての10000プロセスが重要です!!!