JobManager と TaskManager に関連するメトリクスに基づいて、実行中のデプロイのパフォーマンスを監視できます。たとえば、CPU、メモリ、およびスレッドの使用率を表示できます。これにより、コードエラー、クラスの初期化の遅延、特定のクラスによる高いリソース使用率などの潜在的な問題を特定できます。このトピックでは、実行中のデプロイの JobManager と TaskManager のパフォーマンスを表示する方法について説明します。
前提条件
Realtime Compute for Apache Flink 名前空間にアクセスするために使用される Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーに必要な権限が付与されています。詳細については、「名前空間に対する権限の付与」をご参照ください。
制限事項
Ververica Runtime (VVR) 4.0.11 以降を使用する Realtime Compute for Apache Flink でのみ、デプロイのパフォーマンスを表示できます。
パフォーマンス監視機能は、実行中のデプロイにのみ適用されます。過去のデプロイのパフォーマンスは表示できません。
パフォーマンス分析ツールの使用
フレームグラフ
フレームグラフは、ほとんどの場合サンプリングされたデータに基づいて生成されるため、完全な実行コンテキストをキャプチャできない場合があります。ボトルネック診断の精度を高めるために、実際のコードを再検討しながら、フレームグラフを他のパフォーマンス分析ツールと一緒に使用することをお勧めします。次の要因に基づいてパフォーマンスボトルネックを特定できます。
CPU 消費: ほとんどの場合、グラフ内のフレームが広いほど、関連するトップレベルの関数呼び出しが他の呼び出しよりも多くの CPU リソースを消費していることを示しており、パフォーマンスの問題が発生する可能性があります。
メモリ割り当て: さまざまな関のメモリ使用量。
ロック: ロックの競合またはデッドロックによって発生する可能性のあるパフォーマンスの問題。
ITimer: 特定の間隔内のすべてのスレッドの CPU 消費。

フレームグラフを使用して潜在的なパフォーマンスボトルネックを特定する手順:
フレームグラフの構造を表示します。
フレームグラフは、複数のレイヤーのスタックフレームで構成されています。各レイヤーは、コールスタック内のレベルを表します。一番下のレイヤーはアプリケーションのエントリポイントを示し、上のレイヤーは上位レベルの関数呼び出しを示します。
スタックフレームの幅と頻度に注目します。
スタックフレームが広いほど、関数が他の関数よりも多くの CPU 時間を消費していることを示しており、ほとんどの場合ボトルネックの問題が発生します。特定のスタックフレームが頻繁に表示される場合、対応する関数が繰り返し呼び出されており、パフォーマンスの問題が発生する可能性があります。
コールスタックレベルを決定します。
スタックフレームの垂直方向の位置は、コールスタックレベルを示します。ほとんどの場合、下部の幅の広いフレームは、プログラムの初期段階または主要部分で問題が発生していることを示し、上部の幅の広いフレームは特定の関数に関連する問題を示します。
コードを再検討します。
コードを再検討し、前の手順で特定したホットスポットの実装を最適化します。たとえば、ループの数を減らし、データ構造を改善し、同期操作を減らすことができます。
パフォーマンステストを実行します。
パフォーマンステストを実行して、コードの最適化を検証します。最適化前後のフレームグラフを比較して、ボトルネックが解消されているかどうかを確認できます。
コードに Java 以外の関数が存在する場合、対応するスタックフレームには、フレームグラフでキーワード「unknown」のラベルが付けられます。詳細については、GitHub にアクセスしてください。
スレッド
[デバッグ] タブに移動します。
JobManager のパフォーマンス
[ログ] タブで、[job Manager] タブをクリックし、[デバッグ] タブをクリックします。
実行中の TaskManager のパフォーマンス
[ログ] タブで、[実行中の Task Manager] タブをクリックし、[パス、ID] 列の値をクリックして、[デバッグ] をクリックします。
[スレッド] タブに移動し、管理する演算子を見つけて、[アクション] 列の [サンプル] をクリックします。表示されるウィンドウで、演算子がサンプリングされるまでしばらく待ちます。次に、スレッドスタックを確認します。次の図は、Gemini State によってアクセスされるスレッドスタックを示しています。

スレッドダンプ
[ログ] タブで、[実行中の Task Manager] タブをクリックし、[パス、ID] 列の値をクリックします。
[スレッドダンプ] タブに移動し、状態データを処理するために使用される演算子を名前で検索し、演算子と GeminiStateBackend または RocksDBStateBackend との間のインタラクション情報を含むスレッドスタックが演算子に表示されるかどうかを確認します。
[ステータス] タブで演算子の名前を表示できます。
参考資料
インテリジェントデプロイ診断機能は、デプロイのヘルスステータスを監視し、ビジネスの安定性と信頼性を確保するのに役立ちます。詳細については、「インテリジェントデプロイ診断の実行」をご参照ください。
デプロイ構成と Flink SQL の最適化を使用して、Flink SQL デプロイのパフォーマンスを向上させることができます。詳細については、「Flink SQL の最適化」をご参照ください。