Flinkのwebインタフェースは実行中のジョブのバックプレッシャーの挙動を関するためのタブを提供します。
タスクについてのバックプレッシャーの警告 (例えば High
) を見る場合は、これはダウンストリーム オペレータが消費することができるよりもデータの生成が速いことを意味します。Records in your job flow downstream (e.g. from sources to sinks) and back pressure is propagated in the opposite direction, up the stream.
例として単純なSource -> Sink
ジョブを使います。Source
についての警告を見る場合は、これはSink
が Source
が生成するよりデータの消費が遅いことを意味します。Sink
はupstreamオペレータ Source
をバックプレッシャーします。
バックプレッシャーの監視は実行中のタスクのスタックトレースのサンプルを繰り返し取ることで動作します。ジョブマネージャーはジョブのタスクについてThread.getStackTrace()
への繰り返しの呼び出しを引き起こします。
例においてタスクスレッドがある内部メソッド呼び出し(ネットワークのスタックからバッファをリクエストする)で詰まる場合、これはタスクのバックプレッシャーがあることを意味します。
デフォルトでは、ジョブマネージャーはバックプレッシャーを決定するために書くタスクについて毎50msごとに100のスタックトレースを引き起こします。webインタフェースで見えるレシオはどれだけの数のこれらのスタックトレースが内部メソッド呼び出しでスタックされているかを知らせます。例えば 0.01
はそのメソッドの中で100分の1だけがスタックしていたことを示します。
スタックトレースの標本でタスクマネージャーに負荷を掛けないために、webインタフェースは60秒後に標本をリフレッシュします。
以下の設定キーを使ってジョブマネージャーのための標本の数を設定することができます。
jobmanager.web.backpressure.refresh-interval
: Time after which available stats are deprecated and need to be refreshed (DEFAULT: 60000, 1 min).jobmanager.web.backpressure.num-samples
: バックプレッシャーを決定するために取るスタックトレースの標本の数 (デフォルト: 100)。jobmanager.web.backpressure.delay-between-samples
: バックプレッシャーを決定するためのスタックトレースの標本間の遅延 (デフォルト: 50, 50 ms).job overview の隣にBack Pressure タブを見つけることができます。
このことは、ジョブマネージャーが実行中のタスクのスタックトレースの標本を引き起こしたことを意味します。デフォルトの設定では、これが完了するには5秒掛かります。
行をクリックすると、このオペレータのすべてのサブタスクのための標本を引き起こすことに注意してください。
タスクについてステータス OK が表示されると、バックプレッシャーの指標がありません。一方で、HIGHが表示されるとそのタスクはバックプレッシャーを受けています。