Part 6
Java の診断とプロファイリング
このパートで学ぶこと
Java アプリケーションの遅延、CPU 使用率、メモリ増加、スレッドの停滞を、推測だけで直すことはできません。 症状に合う診断手段を選び、変更前の記録を残してから原因を絞ります。
このパートでは、JDK 21 に含まれる jcmd と Java Flight Recorder(JFR)、JDK Mission Control(JMC)、async-profiler を扱います。
OpenTelemetry のトレース、メトリクス、ログとプロファイルの役割も区別します。
前提知識
- Java のコンパイルと JVM の実行モデル(Part 1)
- メトリクス、ログ、トレース(Part 3、Part 4)
- レイテンシ、使用率、フレームグラフ(Part 5)
想定所要時間
全 5 章を通して 3〜4 時間 を想定しています。 JDK 21 の標準機能は手元で試せます。 async-profiler の演習には、対応する Linux または macOS 環境と別途ダウンロードした実行ファイルが必要です。
到達目標
- 症状に応じてデバッガー、スレッドダンプ、JFR、サンプリングプロファイラーを選べる
- JFR を継続記録し、インシデント時の範囲をファイルへ取り出せる
- JMC と
jfrコマンドで JFR のイベントを調査できる - async-profiler で CPU、待機、割り当て、ロックを区別して記録できる
- Java の診断記録と OpenTelemetry のシグナルを、成熟度を踏まえて組み合わせられる