4MB/秒の持続的なネットワーク転送の40〜50分ごとに停止するサードパーティのネットワークファイル転送Javaプログラム用に、Ubuntu LTSにウォッチドッグを作成する必要があります。
その Java プログラムを変更することはできませんが、upstart を介して生成されます。
私の現在のウォッチドッグは忙しい待機中です:
while monitoring_enabled:
begin_time = now()
# query ps and /proc to see if it's there
end_time = now()
diff_time = end_time - begin_time
if not diff_time > sleep_time:
sleep(sleep_time - diff_time)
「忙しい待機は悪い」ので、これは最大10%のCPUを消費しているため、これを解決するより良い方法があるかどうか疑問に思っていました:
ポーリングの代わりに通知/イベント処理を行います。プロセスが終了したときに通知/イベントが発生することを暗示しているわけではありませんが、Java プログラムが停止したことを OS が判断できるかどうかを尋ねていることに注意してください。
プロセスがダウンした場合に Java プログラムを再起動するように、Java プログラムを生成する upstart スクリプトを変更しますか?
より良い解決策はありますか?ファイル システム イベントを監視するための Python API ライブラリやシェル ユーティリティのようなものかもしれませんが、Linux プロセスの場合は