CodeZine(コードジン)

特集ページ一覧

知らないなんてもったいない! 障害発生の原因を洗い出すOSSのJavaVM解析支援ツール「HeapStats」を使ってみよう

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/12/19 14:00

目次

JVM監視エージェントのインストール

 それでは、JVM監視エージェントとアナライザをそれぞれインストールしてみましょう。まずはJVM監視エージェントのインストールです。本稿では、Fedora 20にJVM監視エージェントをインストールしてみます。

 JVM監視エージェントをインストールする方法には次の2つがあります。

  • ソースコードを自分でビルドしてインストールする
  • HeapStatsコミュニティサイトで提供されているRPMパッケージをダウンロードしてインストールする

 本稿では、後者のRPMパッケージからインストールする方法を紹介します。前者のソースコードを自分でビルドしてインストールする方法については、HeapStatsコミュニティサイトをご覧ください。

 また、本稿ではRPMパッケージ名ファイル名の中で、次の表に示す記号を使っています。適宜、読み替えてください。

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

 次の画面が表示されたら、インストールは完了です。

アナライザ初期画面
アナライザ初期画面

 


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 久保田 祐史(クボタ ユウジ)

    日本電信電話株式会社 OSSセンタ所属。OpenJDKを中心とした OSS製品のテクニカルサポートを担当。パフォーマンス劣化からコア解析までなんでもござれの火消し役。 IcedTea Committer. JavaOne2014 Speaker. HeapStatsやJVMについて発表したりし...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5