
Dataflow ボトルネック検出機能を使用して、Dataflow ストリーミング ジョブの進行ブロックを診断し、パイプラインのパフォーマンスを最適化します。検出機能は、スループットを制限してバックログの原因となるデータ パイプライン内のコンポーネントを自動的にハイライト表示します。
ボトルネック検出機能を使用すると、実行遅延の正確な場所と原因を特定できるため、試行錯誤で推測することなく、複雑な Apache Beam ストリーミング パイプラインのトラブルシューティングを行うことができます。
ボトルネック検出の仕組み
通常、ストリーミング パイプラインは、キューで接続された一連のステップで構成されます。データは、アップストリーム ソースから中間変換を経てダウンストリーム シンクに順番に流れます。
多くのパイプラインでは、全体的なスループットが単一のコンポーネントまたは
ステップによって制約され、ボトルネックが発生したり、ジョブの進行が遅くなったりします。ダウンストリーム コンポーネントがアップストリーム コンポーネントで生成されたデータを迅速に処理できない場合、それらの間のキューが埋まり始めます。たとえば、アップストリームのストリーミング シャッフル コンポーネントが、低速のダウンストリームのユーザー定義 DoFn がデータを処理できる速度よりも速くデータを生成すると、キューが埋まります。
時間の経過とともに、この遅延はパイプラインのすべてのステップに影響します。バックログがアップストリームで増加し、最終的にパイプラインが元のソースから入力を取り込んで処理できる速度が制限されます。この動作は、バックログの伝播と呼ばれます。
バックログの伝播が発生すると、基盤となる制約の原因が単一のステップであっても、パイプラインの複数のステージが異常または低速に見えることがあります。ボトルネック検出機能は、次のものを含むすべてのコンポーネントで実行遅延を継続的にモニタリングします。
- ストリーミング シャッフル
- ユーザー定義関数(
DoFnスレッド) - 永続的な状態のコミット
コンポーネントで 5 分を超える処理遅延が発生すると、Dataflow ボトルネック検出機能はボトルネックとして登録します。ジョブ実行グラフでステップがハイライト表示され、詳細な診断情報が提供されます。
ボトルネックの種類

ボトルネックがアクティブな場合、ボトルネック検出機能はボトルネックを次のいずれかの状態に分類します。
- 処理が停止しており、進行していない: パイプラインの進行が 影響を受けるステップで完全に停止しています。
- 処理は進行中だが、追いついていない: 現在のステップは 機能していますが、受信したデータを到着した速度で処理できないため、 バックログが増加しています。
- 処理は進行中だが、バックログは一定のままである: ステップは、受信速度と同じ速度で データを処理しています。バックログは増加していませんが、高い状態が維持されています。
- 処理は進行中であり、バックログを解消しつつある: ステップは バックログを正常にクリアしています。既存のバックログを使用してパイプラインを開始した場合、この状態は正常であり、介入は必要ありません。
ボトルネック検出機能の診断情報の表示と対処方法について詳しくは、 ボトルネックを検出して解決するをご覧ください。
次のステップ
- Dataflow パイプラインのボトルネックを 検出して解決する方法を学習する。
- ストリーミング ジョブの処理速度が遅い場合や停止している場合のトラブルシューティングを確認する 。
- 高度なパフォーマンス プロファイリングについては、 Cloud Profiler を使用してパイプラインのパフォーマンスをモニタリングするをご覧ください。