Javaでなぜ問題が起きるのか 〜システムをきちんと運用するための基礎知識

第4回 Javaから情報を取得する方法を知る

この記事を読むのに必要な時間:およそ 2 分

2. JMXクライアントを使用して,MBeanサーバへ接続する

図3 JConsoleの新規接続画面

図3 JConsoleの新規接続画面

JMXクライアントであるJConsoleを起動すると,ダイアログの上側にローカルJavaプロセスの一覧,下側にリモートプロセスのURLを入力する項目があります,ローカルJavaプロセスへ接続するには一覧の中から接続したいプロセスを選択します。

リモートプロセスへ接続する場合は,IPアドレスとポート番号を指定して接続します。必要に応じてユーザ名,パスワードも指定します。

3. MBeanの名前を指定してMBeanへアクセスする

図4 MBeansタブ

図4 MBeansタブ

接続後,概要タブが選択されているので,MBeansタブを選択します。

ここでは,ランタイムの情報を管理するMBeanであるjava.lang:type=Runtimeへアクセスする例を挙げます。

まず,左側のツリーあるjava.lang というディレクトリを選択します。

次に,Runtimeを選択します。

属性以下にある項目を選択することで,このMBeanが公開している情報を確認できます。

実装によりますが,一般的にJVMやAPサーバはたくさんのMBeanを公開しています。以下は一例です。

  • アプリケーションサーバ → サーブレットへのアクセス数,データソースの使用数など
  • JVM → ランタイム,ヒープの情報

ダンプする

トラブルシュートや動作確認のため,スレッドやヒープのリソースがどのように使われているかを詳細に確認したいときがあります。そのような場合には,Java VMが持つリソースをそのまま出力することで情報を取得します。

図5 ダンプ

図5 ダンプ

リソースを出力することをダンプと呼び,それによって作成されるファイルをダンプファイルと呼びます。ダンプファイルには,出力を行った瞬間の情報が含まれています。

注意していただきたいのは,ダンプには非常に多くのリソースと時間を消費することです。そのため,ダンプの取得は,リソースを消費してよく,時間がかかってもいい時間に行いましょう。また,ヒープダンプは,ダンプファイルがヒープサイズを超えるサイズになることもあるので,ダンプ先となるストレージには十分な空き容量が必要です。

ダンプファイルには情報が膨大にあるため,JVisualVMなどのツールを使用することをおすすめします。これらツールには,1つのダンプファイルだけを確認するだけではなく,複数のダンプファイルを同時に開いて差分を確認しやすくする機能が実装されています。これらの機能を使用して分析するようにしましょう。

おわりに

いかがでしたでしょうか? Javaには情報を取得する方法がさまざまあります。公開されている情報を常に監視し,普段と異なる動きになったらログから何が起こったかを確認することで,多くの問題に備えることができるようになります。さらに詳細な情報が必要になった場合は,ダンプファイルを確認して,問題箇所を特定していきます。

次回以降はJVM,APサーバ,アプリケーションでどのような情報を取得するかを紹介していきます。

著者プロフィール

伊藤智博(いとうちひろ)

日本オラクル(株)コンサルタント。

テクノロジストとしてJavaに関わる製品の技術支援をおもに担当し,Java Day TokyoやJavaOne San Franciscoなどでの講演も行う。得意分野は,Java全般を対象としたトラブルシューティングとパフォーマンスチューニング。最近は,Javaコミュニティへの支援や,Oracle製品とOSSの間を埋めるツールの作成を趣味としている。

ブログ:http://chiroito.blogspot.jp/
Twitter:@chiroito

コメント

コメントの記入