Javaの障害に悩まされたことはありませんか? 障害が発生した場合、まず速やかにサービスを復旧させ、それから原因の調査・再発の防止を行うのが一般的です。しかし、原因を探し出そうにも有用な情報が残されていなかったために解析が進まず、再び同じ障害が発生して情報が得られるまで、そのまま運用を続けるしかないことがあります。
避けるべき状況ですが、残念なことにこのようなことは珍しくありません。解析に必要な情報を漏らさず取得するためには、サービス開始前に入念な準備が必要ですが、現実にはそこまで時間をかけられない場合もあり、往々にして準備不足となる場合があるからです。
こういった不幸な状況を防ぐ手段の1つとして、本稿では「HeapStats」というツールを利用した障害解析方法を紹介します。
HeapStatsとは
「HeapStats」は、NTT OSSセンタが開発を行い2013年にOSS(オープンソースソフトウェア)として公開したJavaVM障害解析支援ツールです。 Javaアプリケーションにおけるメモリ不足(OutOfMemoryError)やデッドロックといった障害を素早く解決することを目的として開発されました。特に、Javaヒープメモリ内の状態など、従来は高い負荷をかけて取得する必要があった情報を、低オーバーヘッドで自動的に取得できるという特徴を備えており、様々な商用サービスや検証環境で利用されています。また、Javaに関する大規模な国際会議であるJavaOne2014でも発表を行っています。
HeapStatsは「JVM監視エージェント」と「アナライザ」という2つのソフトウェアから構成されています。
JVM監視エージェントは、Javaのヒープやシステムリソースの利用状況を常時収集するなど、解析に必要な情報を取り漏らさず収集します。これにより、冒頭のような情報不足で障害が再び発生するまで待つ必要がなくなります。また、障害の予兆や発生をリアルタイムに検出・通知できるので、障害が発生したときにも柔軟に対応できます。収集した情報は、アナライザによってグラフィカルに表示されるため、素早く直感的に障害を解析することができます。
HeapStatsのシステム要件
本稿執筆時(2014年12月)におけるJVM監視エージェントならびにアナライザのハードウェア要件、ソフトウェア要件は次のとおりです。
JVM監視エージェント
- CPU:Intel Pentium 4以降、または互換プロセッサ
- メモリ:1GB以上(2GB以上を推奨)
- ハードディスク:128MB以上の空き容量
- OS:x86/x86_64版Linux
- Java:OpenJDK 6以降[1]または、Java SE 6以降
-
ライブラリ:PCRE 6.6以降
Net-SNMP 5.3.1以降
[1] OpenJDKを利用する場合には、OpenJDKと同一バージョンのdebuginfoパッケージも必要です。
アナライザ
- CPU:利用OS・JDKの推奨スペック
- メモリ:2GB以上
- ハードディスク:256MB以上の空き容量
- ディスプレイ:解像度1,024×768以上、HighColor(65,536色)以上
-
OS:X Window SystemなどのGUIが動作するLinuxやOS X(Mac)
または、Microsoft Windows Vista以降 - Java:OpenJDK6以降、または、Java SE 6以降
-
各種ライブラリ:JFreeChart 1.0.13以降
JGraphX 2.5以降[2]
[2] JavaにJDK6を利用している場合には、JDK6に対応したJGraphX(2.5.0.3以前のバージョン)を利用する必要があります。
この記事は参考になりましたか?
- この記事の著者
-
久保田 祐史(クボタ ユウジ)
日本電信電話株式会社 OSSセンタ所属。OpenJDKを中心とした OSS製品のテクニカルサポートを担当。パフォーマンス劣化からコア解析までなんでもござれの火消し役。 IcedTea Committer. JavaOne2014 Speaker. HeapStatsやJVMについて発表したりしてます。 ・Twitter: @sugarlife ・slideshare: http://www.slideshare.net/YujiKubota
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
