メインコンテンツまでスキップ
バージョン: Candidate-4.1

プロセスプロファイル (Proc Profile)

プロセスプロファイル (Proc Profile) 機能は、StarRocks のフロントエンド (FE) およびバックエンド (BE) プロセスのパフォーマンスプロファイルを収集し、視覚化するための組み込みメカニズムを提供します。CPU、メモリ割り当てのフレームグラフを生成することで、開発者や管理者は、Web UI から直接、パフォーマンスのボトルネック、高いリソース使用率、および複雑なランタイムの問題を診断できます。

概要

プロセスプロファイリングは、一定期間にわたる StarRocks プロセスの状態をキャプチャするシステムレベルの診断ツールです。個々の SQL 実行に焦点を当てるクエリプロファイル (Query Profile) とは異なり、プロセスプロファイルは、バックグラウンドタスク、メタデータ管理、内部同期など、プロセスが行っていることの全体像を提供します。

画面例

プロセスプロファイルインターフェースは、StarRocks Web UI の proc profiles タブに統合されています。

プロファイルリストビュー

メインページには、選択したノードの収集済みプロファイルファイルの一覧が表示されます。 上部のタブを使用して、FE と異なる BE ノードを切り替えることができます。

プロファイルリストの例

フレームグラフ (Flame Graph)

フレームグラフ

フレームグラフ(Flame Graph)は、プログラム内の各関数またはコードパスのリソース消費分布を示すための可視化分析ツールです。これは、スタックされた長方形(通常は水平に配置された「炎」の形)でコールスタックを表します。

  • 各ボックスは、関数(またはメソッド)の呼び出しを表します。
  • ボックスの幅は、その関数によって消費されたリソースの量(CPU時間、メモリ割り当て頻度、ロック待機時間など)を表します。幅が広いほど、より多くのリソースが消費されています。
  • 垂直方向のスタックは呼び出し関係を表し、最下層がエントリ関数で、その上に子関数がスタックされます。

フレームグラフは、開発者や運用担当者が、システム内で最もリソースを消費しているコードホットスポット、パフォーマンスのボトルネック、および呼び出しパスを迅速に特定するのに役立ち、パフォーマンスチューニングやトラブルシューティングに一般的に使用されます。

StarRocksのプロセスプロファイル機能では、フレームグラフを使用して、CPU使用率、メモリ割り当て、および(BEシナリオにおける)ロック競合のデータ分布を直感的に表示し、最も時間のかかるコードセグメントや呼び出しパスの特定を支援します。

使用シーン

  • CPU ホットスポット分析: どのコードパスや関数が最も多くの CPU サイクルを消費しているかを特定します。
  • メモリ割り当てプロファイリング: メモリが頻繁に割り当てられている場所を追跡し、潜在的なメモリ圧迫の原因を見つけます。
  • 研究開発のトラブルシューティング: 外部のプロファイリングツールを必要とせずに、本番環境での複雑なバグやパフォーマンスの低下を分析するのを支援します。

機能説明

使用方法

  1. アクセス: StarRocks Web UI (デフォルトポート 8030) を開き、proc profiles タブをクリックします。
  2. ノードの選択: FE タブまたは特定の BE ノードタブを選択します。
  3. 視覚化: 任意の項目の View リンクをクリックします。
    • FE の場合、事前生成された HTML フレームグラフを抽出して表示します。
    • BE の場合、生の pprof ファイルをオンザフライで SVG フレームグラフに変換することがあります (変換を実行するため、最初の表示には数秒かかる場合があります)。
  4. 操作: フレームグラフを使用して、特定のコールスタックへのズーム、関数名の検索、またはスタック深度の分析を行います。

提供される情報

  • タイプ (Type): CPU、メモリ割り当て (Memory)、またはロック競合 (Contention、BE のみ)。
  • タイムスタンプ (Timestamp): プロファイルの収集が完了した日時。
  • ファイルサイズ (File Size): 圧縮されたプロファイルデータのサイズ。
  • フレームグラフ (Flame Graph): 各ボックスの幅が相対的なリソース消費 (CPU 時間、割り当て頻度、またはロック待ち時間) を表す階層的な視覚化。

関連パラメータ設定

このプロファイリング機能は関数レベルのサンプリングを行い、フレームグラフによって可視化します。

フロントエンド (FE) の設定

FE のプロファイリングは内部デーモンによって管理され、データ収集には AsyncProfiler を使用します。これらは fe.conf で設定できます。

パラメータデフォルト値説明
proc_profile_cpu_enabletrueFE の自動 CPU プロファイリングを有効にするかどうか。
proc_profile_mem_enabletrueFE の自動メモリ割り当てプロファイリングを有効にするかどうか。
proc_profile_collect_time_s120各プロファイル収集の期間 (秒)。
proc_profile_jstack_depth128収集する最大 Java スタック深度。
proc_profile_file_retained_days1プロファイルファイルの保持日数。
proc_profile_file_retained_size_bytes2147483648 (2GB)保持されるプロファイルファイルの最大合計サイズ。

バックエンド (BE) の設定

BE プロファイルは、内蔵の gperftools を使用して収集され、通常、バックグラウンドスクリプトまたは手動トリガーを介して収集されます。収集されたデータは、pprof ツールを使用してフレームグラフに変換されます。

be.conf での設定

パラメータデフォルト値説明
brpc_port8060収集スクリプトが BE からデータを取得するために使用するポート。
sys_log_dir${STARROCKS_HOME}/log収集されたプロファイルを保存するためのベースディレクトリ (proc_profile サブディレクトリに保存されます)。
flamegraph_tool_dir${STARROCKS_HOME}/bin/flamegraph変換ツール (pprofflamegraph.pl) へのパス。
COLLECT_BE_PROFILE_INTERVAL60collect_be_profile.sh スクリプトをデーモンモードで実行する場合の収集間隔 (秒)。

BE 収集スクリプトのオプション

collect_be_profile.sh スクリプトは、以下のコマンドラインオプションをサポートしています。

オプションデフォルト値説明
--profiling-typecpu収集するプロファイルのタイプ: cpucontention、または both
--duration10各プロファイル収集の期間 (秒)。
--interval60デーモンモードでの収集間隔 (秒)。
--cleanup-days1プロファイルファイルの保持日数。
--cleanup-size2147483648 (2GB)保持されるプロファイルファイルの最大合計サイズ。
--daemon-収集スクリプトをバックグラウンドでデーモンモードとして実行します。

手動 BE 収集の例

提供されているスクリプトを使用して、BE 収集をトリガーまたはスケジュールできます。

# 30 秒間の CPU プロファイルを収集する
./bin/collect_be_profile.sh --profiling-type cpu --duration 30

# デーモンモードで実行し、1 時間ごとにプロファイルを収集する
./bin/collect_be_profile.sh --daemon --interval 3600
Rocky the happy otterStarRocks Assistant

AI generated answers are based on docs and other sources. Please test answers in non-production environments.