すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:デプロイパフォーマンスの監視

最終更新日:Jan 08, 2025

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 でのみ、デプロイのパフォーマンスを表示できます。

  • パフォーマンス監視機能は、実行中のデプロイにのみ適用されます。過去のデプロイのパフォーマンスは表示できません。

手順

  1. Realtime Compute for Apache Flink コンソール にログインします。

  2. 管理するワークスペースを見つけ、[アクション] 列の [コンソール] をクリックします。

  3. 左側のナビゲーションペインで、[O&M] > [デプロイ] をクリックします。

  4. [デプロイ] ページで、管理するデプロイを見つけて名前をクリックします。表示されるページで、[ログ] タブをクリックします。

  5. 次の表に示すタブでデプロイのパフォーマンスを表示します。

    タブ

    説明

    フレームグラフ

    フレームグラフは、ソフトウェアプログラムの実行中のパフォーマンスボトルネックを視覚化できます。フレームグラフは、階層構造を使用してコールスタックを表示し、最も頻繁に実行されるコードセグメントを強調表示します。詳細については、「Flame Graphs」をご参照ください。

    フレームグラフは、プログラム内の CPU を集中的に使用する関数 (ホットスポットとも呼ばれます) を特定するための直感的な方法を提供します。これにより、的を絞った最適化を実行できます。

    メモリ

    Java 仮想マシン (JVM) のさまざまなスペースでのメモリ使用量を表示できます。

    スレッド

    各スレッドの詳細を表示し、サンプリングと分析のためにスレッドを選択できます。

    スレッドダンプ

    現在の時点でのすべてのスレッドに関する情報を表示できます。

パフォーマンス分析ツールの使用

フレームグラフ

フレームグラフは、ほとんどの場合サンプリングされたデータに基づいて生成されるため、完全な実行コンテキストをキャプチャできない場合があります。ボトルネック診断の精度を高めるために、実際のコードを再検討しながら、フレームグラフを他のパフォーマンス分析ツールと一緒に使用することをお勧めします。次の要因に基づいてパフォーマンスボトルネックを特定できます。

  • CPU 消費: ほとんどの場合、グラフ内のフレームが広いほど、関連するトップレベルの関数呼び出しが他の呼び出しよりも多くの CPU リソースを消費していることを示しており、パフォーマンスの問題が発生する可能性があります。

  • メモリ割り当て: さまざまな関のメモリ使用量。

  • ロック: ロックの競合またはデッドロックによって発生する可能性のあるパフォーマンスの問題。

  • ITimer: 特定の間隔内のすべてのスレッドの CPU 消費。

查看作业性能.jpg

フレームグラフを使用して潜在的なパフォーマンスボトルネックを特定する手順:

  1. フレームグラフの構造を表示します。

    フレームグラフは、複数のレイヤーのスタックフレームで構成されています。各レイヤーは、コールスタック内のレベルを表します。一番下のレイヤーはアプリケーションのエントリポイントを示し、上のレイヤーは上位レベルの関数呼び出しを示します。

  2. スタックフレームの幅と頻度に注目します。

    スタックフレームが広いほど、関数が他の関数よりも多くの CPU 時間を消費していることを示しており、ほとんどの場合ボトルネックの問題が発生します。特定のスタックフレームが頻繁に表示される場合、対応する関数が繰り返し呼び出されており、パフォーマンスの問題が発生する可能性があります。

  3. コールスタックレベルを決定します。

    スタックフレームの垂直方向の位置は、コールスタックレベルを示します。ほとんどの場合、下部の幅の広いフレームは、プログラムの初期段階または主要部分で問題が発生していることを示し、上部の幅の広いフレームは特定の関数に関連する問題を示します。

  4. コードを再検討します。

    コードを再検討し、前の手順で特定したホットスポットの実装を最適化します。たとえば、ループの数を減らし、データ構造を改善し、同期操作を減らすことができます。

  5. パフォーマンステストを実行します。

    パフォーマンステストを実行して、コードの最適化を検証します。最適化前後のフレームグラフを比較して、ボトルネックが解消されているかどうかを確認できます。

説明

コードに Java 以外の関数が存在する場合、対応するスタックフレームには、フレームグラフでキーワード「unknown」のラベルが付けられます。詳細については、GitHub にアクセスしてください。

スレッド

  1. [デバッグ] タブに移動します。

    • JobManager のパフォーマンス

      [ログ] タブで、[job Manager] タブをクリックし、[デバッグ] タブをクリックします。

    • 実行中の TaskManager のパフォーマンス

      [ログ] タブで、[実行中の Task Manager] タブをクリックし、[パス、ID] 列の値をクリックして、[デバッグ] をクリックします。

  2. [スレッド] タブに移動し、管理する演算子を見つけて、[アクション] 列の [サンプル] をクリックします。表示されるウィンドウで、演算子がサンプリングされるまでしばらく待ちます。次に、スレッドスタックを確認します。次の図は、Gemini State によってアクセスされるスレッドスタックを示しています。

    查看作业性能2.jpg

スレッドダンプ

  1. [ログ] タブで、[実行中の Task Manager] タブをクリックし、[パス、ID] 列の値をクリックします。

  2. [スレッドダンプ] タブに移動し、状態データを処理するために使用される演算子を名前で検索し、演算子と GeminiStateBackend または RocksDBStateBackend との間のインタラクション情報を含むスレッドスタックが演算子に表示されるかどうかを確認します。

    查看作业性能3.jpg [ステータス] タブで演算子の名前を表示できます。

    查看作业性能4.jpg

参考資料

  • インテリジェントデプロイ診断機能は、デプロイのヘルスステータスを監視し、ビジネスの安定性と信頼性を確保するのに役立ちます。詳細については、「インテリジェントデプロイ診断の実行」をご参照ください。

  • デプロイ構成と Flink SQL の最適化を使用して、Flink SQL デプロイのパフォーマンスを向上させることができます。詳細については、「Flink SQL の最適化」をご参照ください。