スキップしてメイン コンテンツに移動

JFRのDumpをGraalVMで可視化する

JFRのDumpをGraalVMで確認する。
どうやらJMXでコンテナ内のアプリに直接繋いで云々というのはちょっと通常やることではない雰囲気を覚えた。
で、だとしてもパフォーマンスチューニングはしたい。

となれば、JFRの記録をとって、それをなんらかの方法で可視化すれば良いということになる。

JFRの記録の方は簡単。

おなじみjpsでプロセス番号を調べて(e.g. 6798)、
jcmd 6798 JFR.start
とする。

そして、

jcmd 6798 JFR.dump name=1 filename=dump.jfr

なんてやればその時点までの記録がファイルに残る。


問題は可視化の方法で、以前にJFRをローカルで動かして、そのプロセスに対してGraalVMが接続してなんらか確認、なんてことはした。
で、ローカルファイルの場合は?というのが今回のお題。

結論としてはこちらも簡単だった。プラグインインストールが必要という点だけわかれば後は簡単。
次の記事を参考に、GraalVMを起動後、Toolから”VisualVM-JFR”と”VisualVM-JFR-Generic”を選ぶ。

JDK Flight Recorder Support in VisualVM - graalvm - Medium https://medium.com/graalvm/jfr-support-in-visualvm-62fddd4f0795

これでインストールが完了して再起動をかけると、左にJFR Snapshotsと出るようになるのでダブルクリックで開いて先ほど記録したJFRのファイルを読み込ませてあげれば良い。
(ブログ記事を流し読みした時、え、手元のGraalVMにはJFR Snapshotsなんてないんだけど……とちょっと焦った)

ちなみに、拡張子は.jfrでないと選べない。この記録を残している時、まさにまんまとjfr.dumpなんて名前で記録していたものだから選べなくてrenameを強いられた。