【けいぞくてきぷろふぁいりんぐ】

継続的プロファイリング とは?

💡 本番環境を常時健康診断、パフォーマンスの隠れた病巣を発見
📌 このページのポイント
継続的プロファイリングの仕組み 本番アプリ funcA funcB 低オーバーヘッド(1〜5%) プロファイラ サンプリング CPU / メモリ Pyroscope / Parca 保管 時系列 データベース フレームグラフ(可視化) main() — 100% handleRequest() — 52% queryDB() — 45% 発見 ボトル ネック 特定
継続的プロファイリングのイメージ
ひよこ ひよこ

モニタリングCPU使用率は見てるけど、それとは違うの?

ペンギン先生 ペンギン先生

モニタリングは『CPUが80%使われてる』ということは分かるけど、『どの関数が何%使ってるか』まではわからないんだ。継続的プロファイリングはコードのどの部分がリソースを消費してるかまで掘り下げられるのが違いだよ

ひよこ ひよこ

本番環境で計測して重くならないのかな?

ペンギン先生 ペンギン先生

最新のプロファイラはオーバーヘッドが1〜5%程度に抑えられてるから、本番で常時動かしても大丈夫なんだよ。サンプリング方式で全リクエストではなく一定間隔でスナップショットを取るから軽いんだ

ひよこ ひよこ

フレームグラフってどういうものなの?

ペンギン先生 ペンギン先生

関数の呼び出し階層を横棒の幅で表現するグラフだよ。幅が広い関数ほどCPU時間を多く消費してる。上から下に関数の呼び出し順が並ぶから、ボトルネックの箇所が一目でわかるんだ

ひよこ ひよこ

どんなツールがあるのかな?

ペンギン先生 ペンギン先生

OSSではPyroscopeやParcaが人気だよ。Grafanaとの統合もできる。商用ならDatadog Continuous Profilerが強力で、APMのトレースとプロファイルを紐づけてリクエスト単位でボトルネックを追えるんだ。クラウドコスト削減の切り札としても注目されてるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「継続的プロファイリング」って出てきたら「本番で常時パフォーマンス計測する手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Continuous Profiling」 = 継続的なプロファイリング
💬 Profilingは「性能分析」の意味で、それをContinuously(継続的に)行うことだよ
← 用語集にもどる