2016-09-21 11 views
1

システムに の設定はありますか? の後にサービスを自動的に再起動します。 24時間?systemd:24時間後に自動的にサービスを再開しますか?

または、このような機能を実装するための最善の回避策は何ですか?

背景:私は長年実行していたウェブ収穫とDBコードへの保存において、識別が困難な欠陥があります。それは10日か20日働いて、私たちが手動でリセットするまで突然停止しています。過剰なロギングでさえ、問題がどこから来ているのかまだ分かりません。もちろん、根本的な問題を解決するのはむしろ好きですが、(経済的理由から)無理やり殺して再始動することもおそらくこのトリックです。


編集:私は最終的に本当の欠陥を発見したように見える - (read_json機能は、そのオプションを許可していなかったので)私はタイムアウトを設定(できなかった)していないため、インターネットの問合せを。 socket.setdefaulttimeout(...)を使って解決しました。この問題をまれに解決することを願っています。 ご協力いただきありがとうございます!

答えて

0

Systemdにはウォッチドッグ機能が内蔵されています。詳細はlinkを参照してください。

しかし、ソフトウェアをパッチしてsd_notifyイベントを送信する必要があるため、ウォッチドッグはソフトウェアがまだ生存していることを認識します。 1から

:すべての

まず、ソフトウェアウォッチドッグは、supervisableにするために、それはその イベントループに一定間隔で「私は生きている」信号を送信する をパッチを適用する必要があります。これをパッチするのは比較的簡単です。まず、デーモンは にWATCHDOG_USEC =環境変数を読み込まなければなりません。設定されている場合、 には、サービス用に設定されているように、ASCIIテキスト文字列でフォーマットされたウォッチドッグ間隔(usec)が含まれています( )。デーモンは、その間隔の半分ごとに sd_notify( "WATCHDOG = 1")の呼び出しを発行する必要があります。この方法でパッチされたデーモン は、環境変数が設定されているかどうかをチェックし、 値が設定されていることを確認することによって、ウォッチドッグ機能 を透過的にサポートする必要があります。

アン一層迅速かつ汚いアプローチは、プロセスごとに24時間を殺し、あなたのサービスを再起動しのcronジョブを設定することです。

+0

これは本当に素晴らしいです。感謝万円。 "ウォッチドッグ"、素晴らしい。 read_json関数がそのオプションを許可しなかったので、私はタイムアウトを設定できなかったインターネットクエリーを実際に見つけたようです。 socket.setdefaulttimeout(...)を使って解決しました。この問題をまれに解決することを願っています。しかし、おかげさまで、ありがとうございました。 – AltSheets

0

あなたの要件は次の質問と同じですね。 question on periodic restart of service file

これがあなたの質問に答えることを願っています。

+0

ありがとうございます。 "WatchdogSec" = yesこれは、定期的に "私はまだ生きている"というウォッチドッグに通知するよりも簡単です。 read_json関数がそのオプションを許可しなかったので、私はタイムアウトを設定できなかったインターネットクエリーを実際に見つけたようです。socket.setdefaulttimeout(...)を使って解決しました。この問題をまれに解決することを願っています。しかし、おかげさまで、ありがとうございました。 – AltSheets

関連する問題