バッチジョブの処理速度が遅い場合や停止している場合のトラブルシューティング

このページでは、Dataflow のバッチジョブの処理速度が遅い場合や停止している場合の一般的な原因とそのトラブルシューティング方法について説明します。

バッチジョブの処理速度が遅い場合や停止している場合は、[実行の詳細] タブでジョブの詳細情報を確認し、ボトルネックの原因となっているステージやワーカーを特定します。

根本原因を特定する

  1. ワーカーの起動時にジョブで問題が発生しているかどうかを確認します。詳細については、Pod の同期エラーをご覧ください。

    ジョブがデータ処理を開始したことを確認するには、job-message ログで次のログエントリを探します。

    All workers have finished the startup processes and began to receive work requests
    
  2. ジョブのパフォーマンスを異なるジョブ間で比較するには、入力データの量、ワーカー構成、自動スケーリングの動作、Dataflow Shuffle の設定が同じであることを確認します。

  3. 割り当て上限、ストックアウトの問題、IP アドレスの枯渇などの問題がないか、job-message ログを確認します。

  4. [実行の詳細] タブでステージの進行状況を比較して、時間のかかるステージを特定します。

  5. ジョブにストラグラーがないか確認します。詳細については、バッチジョブのストラグラーのトラブルシューティングをご覧ください。

  6. スループット、CPU、メモリ使用率の指標を確認します。

  7. ワーカーログで警告とエラーを確認します。

  8. ホットキーを確認します

  9. Dataflow Shuffle を使用していない場合は、シャッフルログで、シャッフル オペレーション中の警告とエラーを確認します。ポート 12345 または 12346 で RPC タイムアウト エラーが発生した場合は、ジョブにファイアウォール ルールがない可能性があります。Dataflow のファイアウォール ルールをご覧ください。

  10. Runner v2 が有効になっている場合は、harness ログでエラーを確認します。詳細については、Runner v2 のトラブルシューティングをご覧ください。

ストラグラーを特定する

ストラグラーは、ステージ内の他の作業アイテムと比較して低速な作業アイテムです。ストラグラーの特定と修正については、バッチジョブのストラグラーのトラブルシューティングをご覧ください。

遅延しているステージまたは停滞しているステージを特定する

遅延しているステージまたは停滞しているステージを特定するには、[ステージの進捗状況] ビューを使用します。バーが長いほど、ステージに時間がかかっていることを示します。このビューを使用して、パイプラインで最も遅いステージを特定します。

ボトルネックのステージが見つかったら、次の操作を行います。

  • ステージ内で遅延しているワーカーを特定します。
  • 遅延しているワーカーがない場合は、[ステージ情報] パネルで最も遅いステップを特定します。この情報を使用して、ユーザーコードの最適化が必要な場所を特定します。
  • 並列処理のボトルネックを見つけるには、Dataflow モニタリング指標を使用します。

遅延しているワーカーを特定する

特定のステージで遅延しているワーカーを特定するには、[ワーカーの進捗状況] ビューを使用します。このビューでは、ステージが終了するまですべてのワーカーが作業中であるか、特定のワーカーが遅延タスクで行き詰っているかどうかを確認できます。遅延しているワーカーが見つかった場合は、次の操作を行います。

デバッグツール

パイプラインが遅い場合や停滞している場合は、次のツールを使用して問題を診断できます。

  • インシデントと関連付けてボトルネックを特定するには、Dataflow 用 Cloud Monitoring を使用します。
  • パイプラインのパフォーマンスをモニタリングするには、Cloud Profiler を使用します。
  • 変換の中には、他の変換よりも大容量のパイプラインに適しているものがあります。ログ メッセージを使用すると、バッチ パイプラインまたはストリーミング パイプラインで停止したユーザー変換を特定できます。
  • 停止したジョブの詳細については、Dataflow ジョブの指標をご覧ください。有用な指標は次のとおりです。
    • バックログのバイト数の指標(backlog_bytes)は、処理されていない入力量をステージごとにバイト単位で測定します。この指標を使用して、スループットのない融合されたステップを探します。同様に、バックログ要素の指標(backlog_elements)は、ステージ内の未処理の入力要素の数を測定します。
    • 並列処理キーprocessing_parallelism_keys)指標は、直近 5 分間のパイプラインの特定のステージにおける並列処理キーの数を測定します。この指標を使用して、次のように調査します。
      • 問題を特定のステージに絞り込み、A hot key ... was detected などのホットキーの警告を確認します。
      • 不十分な並列処理によるスループットのボトルネックを見つけます。これらのボトルネックにより、パイプラインの遅延や停止が発生する可能性があります。
    • システムラグ指標(system_lag)とステージごとのシステムラグ指標(per_stage_system_lag)は、データが処理された最大時間または処理を待機している最大時間を測定します。これらの指標を使用して、データソースから非効率的なステージとボトルネックを特定します。

Dataflow モニタリング ウェブ インターフェースに含まれていない追加の指標については、Google Cloud 指標で Dataflow 指標の完全なリストをご覧ください。