私たちは、monitを通してsidekiqプロセスを監視しています。 sidekiqプロセスが約2 GBのメモリに達すると、プロセスを再開します。 90秒のtiemoutで開始および終了プログラムが定義されています。しかし、停止プログラムは失敗しています(90秒のタイムアウトを待ってから)。monitがプロセスを再起動しているときに、monit stopプログラムをキャプチャする方法はありません
これはサンプルのmonit構成です。
check process sidekiq
with pidfile /pathtopidfile
start program = "/bin/sh -c start sidekiq commmand" with timeout 90 seconds
stop program = "stop sidekiq command" with timeout 90 seconds
if totalmem is greater than 2GB for 3 cycles then restart
***## I need have some condition like this -> if "stop_program failed" then "do some action"***
end
私は停止プログラムを取得するための正しい構文を知らないP.Sは..私はMONITのブログをチェックしますが、私はできなかったMONITに失敗しました。
こんにちは、このような機能はMonitにはないと思います。通常、init/service/daemonスクリプトはタイムアウトを処理し、対応するアクションを実行します。あなたの停止スクリプトをタイムアウトにカスタマイズして行動自体を取るのではなく、私はMonitレベルのどんなきれいな解決策も予見できません。 – TheCodeKiller
@TheCodeKiller - >あなたのコメントをありがとう。私はあなたが問題を解決するように提案したのと同じやり方をしました。私は停止スクリプトをカスタマイズしました(タイムアウト内で停止しないと、sidekiqプロセスを強制終了させます)。 – Karthy