に最終更新
FE Profiler でフレームグラフを生成する
はじめに
Apache Doris 2.1.4 以降では、FE のデプロイディレクトリ ${DORIS_FE_HOME}/bin に profile_fe.sh スクリプトが同梱されています。このスクリプトは async-profiler を使用して FE のフレームグラフを生成し、FE のパフォーマンスボトルネックを特定できるようにします。
対応システム
| システム | 対応状況 |
|---|---|
| Linux | 対応 |
| macOS | 対応 |
| Windows | まだ非対応 |
使用手順
1. profile_fe.sh を実行する
# Profile the FE for 10 seconds by default and generate a flame graph
${DORIS_FE_HOME}/bin/profile_fe.sh
# Profile the FE for 30 seconds and generate a flame graph
PROFILE_SECONDS=30 ${DORIS_FE_HOME}/bin/profile_fe.sh
| 環境変数 | 意味 | デフォルト値 |
|---|---|---|
PROFILE_SECONDS | async-profiler のサンプリング時間(秒) | 10 |
2. ワークロードを実行する
コマンドを実行すると、async-profiler は指定された時間だけサンプリングを続けます。その間に調査対象のクエリを FE に繰り返し送信し、対象のコードパスのスタックフレームを async-profiler が取得できるようにします。
3. フレームグラフを確認する
サンプリングが終了すると、スクリプトは ${DORIS_FE_HOME}/log ディレクトリに HTML 形式のフレームグラフファイルを生成します。FE のパフォーマンスボトルネックは、通常、高さが低く幅が広い「台地状」の部分として現れます。それらのスタックフレームに対応するコードを最適化します。
フレームグラフの例:

古いバージョンの FE で async-profiler を使用する
Doris 2.1.4 より前のバージョンでは、次の二つのファイルを手動でダウンロードします。
- ap-loader-all-3.0-8.jar を
${DORIS_FE_HOME}/libディレクトリにダウンロードします。 - profile_fe.sh を
${DORIS_FE_HOME}/binディレクトリにダウンロードします。 profile_fe.shを実行してフレームグラフを生成します。
FAQ
質問:サンプリング中に、対象の関数のスタックフレームがフレームグラフに表示されません。
通常は、サンプリング中に対応するクエリの処理経路が実行されていません。profile_fe.sh の実行中に、対象の SQL を手動またはスクリプトで繰り返し送信するか、PROFILE_SECONDS=30 を指定してサンプリング時間を延ばしてください。
質問:FE Profiler と Arthas はどのように使い分けますか?
profile_fe.sh:サンプリング時間を指定して実行するスクリプトです。単発のフレームグラフをすばやく生成する場合に適しています。- Arthas:
traceやwatchなどを使用して、実行中の状態をより細かく対話的に調査できるターミナルです。詳細な調査に適しています。