先日のJVM Operations Casual Talks、GCやメモリ管理についてまとまった発表や、モニタリングの手法などの話が聞けてよい会でした。
微妙に意識が高まっているところで、メモリ使用量やGCの統計情報を取得して、GrowthForecastでグラフを作ってくれるスクリプトを書きました。それPla、それFluentd系のやつです
https://github.com/kazeburo/jstat2gf
この元ネタは JVM Operation Casual Talksでのモリスさんの発表にでてきたグラフです。あれを簡単に作れるツールになります。
某JVMのプロセスに対して実行すると、こんな感じのグラフになります。上から「NEW領域」「OLD領域」「Permament領域」「1秒あたりのFull GCの回数」「1秒あたりのFull GCにかかった時間」となっています。
なんかFull GCがいっぱい実行されてますね!
デーモンではない普通のscriptなので、cronで実行します
PATH=/path/to/java/bin:/usr/bin
* * * * * perl /path/to/jstat2gf.pl --gf-uri=http://gf/ --gf-service=example --gf-section=jvm --gf-name-prefix=app001 --jvm-pid=$(pgrep -of 'process name')
今のところインストールはgit cloneとcpanmで。
$ git clone https://github.com/kazeburo/jstat2gf.git
$ cd jstat2gf
$ cpanm --installdeps .
perl-5.14以上なら追加の依存モジュールはないと思われます。
最後に、JVM Operation Casual Talksでの自分のLT資料はこちらです。普段やっているperlのWebアプリケーションの運用を紹介して、それJVMだとどうしたらええの?という疑問をまとめたつもり