Go to main content
Oracle® Solaris 11.3 でのシステムサービスの開発

印刷ビューの終了

更新: 2016 年 11 月
 
 

定期的なサービスの起動メソッド実行のスケジュール

(periodic_method 要素の exec 属性によって指定された) 定期的なサービスインスタンスの起動メソッドの実行をスケジュールする場合は、常に periodic_method 要素の period 属性の値が必要です。periodic_method 要素のその他の属性も使用されることがあり、next_run 値が使用される場合があります。

periodic_method 要素のスケジューリング属性 (perioddelayjitterpersistent、および recover) は、periodic プロパティーグループのプロパティーとして格納されます。たとえば、定期的なサービスをインポートすると、マニフェスト内の period 属性は periodic/period プロパティーになります。管理者は、svcprop コマンドと svccfg コマンドを使用して periodic プロパティーグループのプロパティー値を表示して、svccfg コマンドを使用してこれらの値を変更できます。

period プロパティーには有効な値が必要です。jitterdelaypersistent、および recover の各プロパティーにはデフォルト値があり、明示的に設定する必要はありません。表 2で示したように、time 値の単位は秒数です。

次のスケジューリングの説明では、イタリックはプロパティーの値を示します。たとえば、jitter は、サービス構成リポジトリ内の periodic/jitter プロパティーの値で、これはサービスマニフェスト内の periodic_method 要素の jitter 属性の値と同じです。

インスタンスが最初に有効にされたあとでスケジュール

定期的なサービスインスタンスがはじめて有効にされると (たとえば、システムのリブート時)、インスタンスの起動メソッドの最初の実行は、インスタンスが online 状態に遷移してから次の秒数で行われます。

delay + RAND(jitter)

インスタンスの起動メソッドの後続の実行は、次の相対的な時間に行われます。

period + RAND(jitter)

スケジュールの変動を防ぐために、後続の実行では、前の実行の jitter 値は無視されます。たとえば、インスタンスの起動メソッドの 2 番目の実行は、インスタンスが online 状態に遷移してから次の秒数で行われます。

delay + period + RAND(jitter)

インスタンスの起動メソッドの n 番目の実行は、インスタンスが online 状態に遷移してから次の秒数で行われます。

delay + (n-1)period + RAND(jitter)

システムの停止時間後のスケジュール

persistent プロパティーと recover プロパティーは、定期的なインスタンスがシステムの停止時間から回復したときに、定期的なインスタンスメソッドが実行される時間を変更できます。recover プロパティーの値は、persistent プロパティーの値が true である場合にのみ有効です。

persistent プロパティーの値が false の場合、システムの停止時間から回復した定期的なインスタンスの起動メソッドの次の実行は、インスタンスが online 状態に遷移してから次の秒数で行われます。

delay + RAND(jitter)

persistent プロパティーの値が true で、recover プロパティーの値が false の場合、システムの停止時間から回復したインスタンスの起動メソッドの次の実行は、次の絶対時間にスケジュールされます。

next_run + (n)period

next_run プロパティーの値が将来の値である場合、n は 0 です。next_run プロパティーの値が過去の値である場合、将来の時間になる最小値である n が使用されます。後続の呼び出しは、period 値と jitter 値に従ってその時間から発生します。next_run プロパティーの説明は、起動メソッドの最後および次の呼び出しに記載されています。

persistent プロパティーの値が true で、recover プロパティーの値が true の場合、インスタンスがシステムの停止時間から回復したら可能なかぎりすぐに、定期的なリスタータはインスタンスの起動メソッドを呼び出します。後続の呼び出しは、period 値と jitter 値に従ってその時間から発生します。

サービスの再起動後のスケジュール

定期的なリスタータサービス (svc:/system/svc/periodic-restarter) は、終了した場合に自動的に再起動しようとします。障害後に定期的なリスタータサービスが再起動すると、それぞれの定期的なインスタンスの起動メソッドが次の絶対時間にスケジュールされます。

next_run + (n)period

next_run プロパティーの値が将来の値である場合、n は 0 です。next_run プロパティーの値が過去の値である場合、将来の時間になる最小値である n が使用されます。後続の呼び出しは、period 値と jitter 値に従ってその時間から発生します。next_run プロパティーの説明は、起動メソッドの最後および次の呼び出しに記載されています。

定期的なサービスインスタンスが再起動すると、インスタンスの起動メソッドは、インスタンスが online 状態に遷移してから次の秒数で呼び出されます。

delay + RAND(jitter)

起動メソッドの問題後のスケジュール

起動メソッドはタスクを実行したあと、period プロパティーで指定された時間内に終了します。定期的なリスタータが次の期間に起動メソッドを呼び出そうとしたときに契約済みのプロセスがまだ存在する場合、その期間の呼び出しはスキップされ、定期的なリスタータは次の期間に再度起動メソッドを呼び出そうとします。定期的なリスタータは、インスタンスが online 状態に遷移してから次の秒数で再度メソッドを呼び出します。ここで、n は、将来の時間になる最小値です。

delay + (n)period + RAND(jitter)

timeout_seconds 値で指定された秒数より長く起動メソッドが実行される場合、契約内のすべてのプロセスが終了し、呼び出しは致命的でない障害になります。はじめて起動メソッドが致命的でない障害で終了した場合、インスタンスは degraded 状態になり、起動メソッドの呼び出しはスケジュールどおりに続行されます。次の 2 つの呼び出しのいずれかが成功した場合、インスタンスは online 状態に戻されます。degraded 状態から online 状態に遷移したあとで、定期的なリスタータは、インスタンスが最初に offline から online 状態に遷移したら次の秒数でメソッドを呼び出します。ここで、n は、将来の時間になる最小値です。

delay + (n)period + RAND(jitter)

起動メソッドの致命的でない障害が 3 回連続して発生したあとで、インスタンスは degraded 状態から maintenance 状態に遷移します。起動メソッドの最初の致命的な障害時に、サービスは maintenance 状態になります。Oracle Solaris 11.3 でのシステムサービスの管理 の 機能低下、オフライン、または保守であるインスタンスの修復を参照してください。