JVM監視エージェントのインストール
それでは、JVM監視エージェントとアナライザをそれぞれインストールしてみましょう。まずはJVM監視エージェントのインストールです。本稿では、Fedora 20にJVM監視エージェントをインストールしてみます。
JVM監視エージェントをインストールする方法には次の2つがあります。
- ソースコードを自分でビルドしてインストールする
- HeapStatsコミュニティサイトで提供されているRPMパッケージをダウンロードしてインストールする
本稿では、後者のRPMパッケージからインストールする方法を紹介します。前者のソースコードを自分でビルドしてインストールする方法については、HeapStatsコミュニティサイトをご覧ください。
また、本稿ではRPMパッケージ名ファイル名の中で、次の表に示す記号を使っています。適宜、読み替えてください。
| 表記 | 概略 |
|---|---|
| x | メジャーバージョン |
| y | マイナーバージョン |
| z | リビジョン |
| @ | 対応OSとアーキテクチャ名 |
プロセッサの確認とRPMパッケージのダウンロード
JVM監視エージェントは、監視対象であるJavaアプリケーションへの影響を最小限に抑えるため、いくつかのプロセッサ機能に応じた最適化を行っています。RPMパッケージで提供されるJVM監視エージェントには無印版のほか、AVX(Intel Advanced Vector Extensions)、SSE4(Streaming SIMD Extensions 4)に最適化されたものが提供されています。インストールするマシンの/proc/cpuinfoのflags項目を確認し、インストールするRPMパッケージを選択することで、Javaアプリケーションへのオーバヘッドを最小限に抑えられます。確認には次のようなコマンドを実行します。
# cat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dtherm fsgsbase smep
インストールするRPMパッケージは、次の基準で選択します。
- "avx"がある場合:AVX版を利用する
- "avx"がなく、"sse4_1"か"sse4_2"がある場合:SSE4版を利用する
- 上記以外の場合、または判断ができない場合:無印版を利用する。
先のコマンドの実行結果では、"avx" があるため、AVX版を利用することになります。
AVX版、およびSSE4版は、RPMパッケージファイル名にそれぞれの名前(avx、sse4)が含まれています。適したRPMパッケージをHeapStatsコミュニティサイトからダウンロードしてください。本稿執筆時のFedora 20向け最新RPMパッケージファイルはここから入手可能です。
インストール手順
はじめに、HeapStatsの動作に必要なJava(ここではOpenJDK 8)とライブラリ(PCRE、Net-SNMP)を、yumコマンドを使ってインストールします。これらをインストール済みでしたら、このコマンドは実行する必要はありません。
# sudo yum install --enablerepo="*" java-1.8.0-openjdk java-1.8.0-openjdk-devel java-1.8.0-openjdk-debuginfo pcre net-snmp net-snmp-libs
次に、ダウンロードしたRPMパッケージが配置されているディレクトリで次のコマンドを入力し、RPMパッケージからJVM監視エージェントのインストールを行います。
# sudo rpm -ivh heapstats_agent-x.y-z.@.rpm 準備中... ############################################## [100%] 1:heapstats_agent ############################################## [100%]
以下のコマンドを入力して動作確認をしてみましょう。2行目以降は、HeapStats 1.1.2のJVM監視エージェントAVX版をインストールした場合の出力です。
# java -agentlib:heapstats -version heapstats INFO: HeapStats 1.1.2 heapstats INFO: Supported processor features: SSE2 SSE3 SSE4.1 AVX heapstats INFO: Agent Attach Enable = true heapstats INFO: SnapShot FileName = heapstats_snapshot.dat heapstats INFO: Heap Log FileName = heapstats_log.csv heapstats INFO: Archive FileName = heapstats_analyze.zip heapstats INFO: LogLevel = Info heapstats INFO: ReduceSnapShot = true heapstats INFO: Trigger on FullGC = true heapstats INFO: Trigger on DumpRequest = true heapstats INFO: Log Trigger on Error = true heapstats INFO: Log Trigger on Signal = true heapstats INFO: Log Trigger on Deadlock = true heapstats INFO: RankingOrder = DELTA heapstats INFO: RankLevel = 5 heapstats INFO: AlertPercentage = 50 ( 1138065408 bytes ) heapstats INFO: Java heap usage alert percentage = 95 ( 2062 MB ) heapstats INFO: PermGen usage alert is DISABLED. heapstats INFO: Interval SnapShot is DISABLED. heapstats INFO: Log interval = 300 sec heapstats INFO: First Collect log = true heapstats INFO: Normal logging signal is DISABLED. heapstats INFO: All logging signal = USR2 heapstats INFO: Reload signal = HUP heapstats INFO: SNMP send = false heapstats INFO: SNMP target = localhost heapstats INFO: SNMP community = public heapstats INFO: Log dirictory = ./tmp heapstats INFO: Archive command = "/usr/bin/zip %archivefile% -jr %logdir%" heapstats INFO: Kill on Error = false (以下略)
実行したディレクトリに、heapstats_log.csvとheapstats_snapshot.datが生成されていたでしょうか? このファイルがJVM監視エージェントにより収集された情報を格納しているファイルです。確認が終わったら、このファイルは削除しましょう。
以上で、JVM監視エージェントのインストールは完了です。
アナライザのインストール
アナライザは、実行可能なJARファイルとして提供されているPure Javaアプリケーションです。HeapStatsコミュニティサイトよりzipアーカイブされたアナライザ(heapstats_analyzer-x.y.z.zip)をダウンロードし、任意の場所に展開します。なお、アナライザはJVM監視エージェントと独立して動作するため、JVM監視エージェントをインストールしたマシンとは別のマシンにインストールすることができます。
展開後、<アナライザ展開先ディレクトリ>/heapstats/libにJFreeChart、およびJGraphX関連ライブラリを配置します。必要なライブラリはJFreeChartのサイトからダウンロードできるアーカイブに含まれている「jfreechart-x.y.z.jar」と「jcommon-x.y.z.jar」、そしてJGraphXのサイトからダウンロードできるアーカイブに含まれている「jgraphx.jar」の3つです。
インストールを終えたら「heapstats.jar」をダブルクリックするか、次のコマンドを実行してアナライザ起動してみましょう。
java -jar heapstats.jar
次の画面が表示されたら、インストールは完了です。
