Data Factory のほとんどのパイプライン アクティビティは、自動再試行をサポートしています。 一時的なエラー(APIの制限、サービス中断、依存関係のフラッピングなど)でアクティビティが失敗した場合、失敗マークする前に一定回数自動でリトライするように設定できます。
また、 アクティビティの間隔をコントロールしたり、再試行回数を設定したり、各活動ごとに個別に待機することで、ワークフロー全体でリトライの動作を正確に調整できます。
アクティビティで再試行設定を設定する
アクティビティの再試行動作を設定するには:
パイプライン キャンバスでアクティビティを選択します。
プロパティ ウィンドウの [ 全般 ] タブで、[再試行を 有効にする ] チェック ボックスをオンにして再試行機能を有効にします。
[再試行] フィールドに再試行回数を設定します。 1 ~ 1000 の値を入力します。 既定値は 1 です。
リトライ間隔の種類 で、固定 または 増加する遅延 を選択して、試行間の待機時間の計算方法を指定します。 次に、選んだタイプの区間フィールドを設定します。 詳細は リトライ間隔 を参照してください。
必要に応じて、特定のエラー条件に基づいて再試行が発生するタイミングを制御するように再試行 条件 (プレビュー) を構成します。
再試行間隔
リトライ間隔は、アクティビティの試行間隔を制御します。 短時間で回復し、予測可能な障害には Fixed を使用します。 停止時間が長い場合は、[遅延を増やす]を使用します。 指数関数的なバックオフを実装しており、試みごとに待ち時間が増加し、上流サービスが回復するまでの時間を徐々に長くします。
Retry interval タイプ設定は、どのアプローチを使うかを制御します。
| タイプ | Behavior |
|---|---|
| 固定( デフォルト) | 毎回同じ秒数を待つ。 |
| 遅延の拡大 | 指数的バックオフを用い、各リトライは指数関数的に増加する範囲からランダムな間隔を待つ。最大値を設定できる。 |
固定
「固定」を選択すると、リトライのたびに同じ秒数の間隔が続きます。 故障が短時間で予測可能な場合にこのタイプを用いてください。
リトライ間隔(秒)を待機する秒数に設定します。 既定値は 30 秒です。
遅延の拡大
遅延を増加 を選択すると、試行のたびに待機時間が指数関数的に長くなります。このパターンは 指数関数的なバックオフ と呼ばれます。 このパターンにより、上流サービスは徐々に復旧する時間が増え、苦戦するシステムの繰り返し負荷が軽減され、パイプラインは手動介入なしに長期障害から自ら復旧できるようになります。
リトライエンジンは、各試みの前に指数関数的に増加する範囲からランダムな区間を選択します。
| Retry | 最小射程 | 最大射程 |
|---|---|---|
| 1 | max(0, 最小間隔) | min(区間、 最大区間) |
| 2 | max(区間、 最小区間) | 最小(2× 間隔、 最大間隔) |
| 3 | max(2× 間隔、 最小間隔) | min(4 × 間隔、 最大間隔) |
| 4 | max(4 × 間隔、 最小間隔) | min(8 × 間隔、 最大間隔) |
| … | … | … |
試行ごとに範囲は倍増し、上限が 最大再試行間隔に達すると、残りの再試はその最大値で待機します。 各範囲内でのランダム選択により、同じ上流システム上で同時進行パイプラインリトライが衝突する可能性が低減されます。
遅延を増加させる場合、2つのフィールドが利用可能です。
| フィールド | Description | Default |
|---|---|---|
| 再試行間隔(秒) | 開始間隔。 バックオフレンジの基準を定義します。 | 30 秒 |
| 最大再試行間隔(秒) | 待機間隔の上限。 リトライはこの値より長く待つことはありません。 | 3600 秒 |
Note
リトライ間隔フィールドは動的式をサポートしていません。 値は静的な整数でなければなりません。
再試行条件の構成 (プレビュー)
既定では、アクティビティは失敗した場合に再試行されます。 再試行条件を使って、どのエラーが再試行を引き起こすかを指定します。 このアプローチにより、認証失敗など解決しないエラーでリトライを無駄にするのを避けることができます。
再試行条件を追加するには:
- [ 再試行条件 (プレビュー)] セクションで、 + ボタンを選択して新しい条件行を追加します。
- 評価する フィールド を選択します。
- エラー メッセージ: エラー メッセージのテキスト コンテンツ。
- 故障タイプ:ユーザーエラーやシステムエラーなどの故障カテゴリ。
- エラーコード:レート制限用の429など、返される特定のエラーコード。
- マッチタイプを定義する オペレーター を選択してください。例えば「 Contains」などです。
- 照合する対象の値を入力します。
- And /Or 列を使用して、複数の条件を組み合わせます。 [ And ] を選択して、すべての条件が一致するように要求するか、 条件 が一致したときに再試行します。
たとえば、レート制限エラーでのみ再試行するには、 フィールド を Error codeに設定し、 演算子 を Containsに設定し、 値 を 429に設定した条件を追加します。
Important
再試行間隔は、条件が評価される 前に 実行されます。 たとえば、1 時間の再試行間隔を設定しても再試行条件が満たされない場合でも、パイプラインは 1 時間待ってから次のアクティビティに進むか、パイプラインの実行を終了します。
ヒント
再試行条件を指定しない場合、すべての失敗に対してアクティビティが再試行されます。 再試行をトリガーするエラーをより選択的にする条件を追加します。
既知の再試行の制限事項
- アクティビティのサポート: 条件付き再試行は、データのコピー、ノートブック、データフロー、ストアド プロシージャのアクティビティなど、特定のアクティビティの種類でサポートされます。
- エラーのプロパティ: 再試行条件は、エラー コード、エラー メッセージ、およびエラーの種類で一致する可能性があります。 コネクタ固有のエラー フィールドの一部を照合できるわけではありません。