Javaの非同期アプリケーションのflame graph profileを取る
netty を使うような非同期 Java のアプリケーション (例えば Play2 Web アプリ) の flame graph profile を取るという話題です.色々な方法が考えられますが,jvm-profiling-tools/async-profiler を利用するのが最も手っ取り早そうな感じがしたので,その方法を示します.
使い方はいたって簡単で,Releases から任意のバージョンのアーカイブを取ってきて,
./profiler.sh -d 60 -f /path/to/flame_graph.svg $JAVA_APP_PID
として実行するだけで 60 秒間プロファイリングし,その結果の flame graph を取得することが可能です.
便利ですね.