問題を切り分けるためには,
情報を取得する方法として,
- Javaの仕様に則った方法
(JVMTI:Java Virtual Machine Tool Interfaceを使ってJava VMへ接続する, など) - JVMやAPサーバの実装に固有の機能を使う方法
しかし,
ログを出力する
「どのような状況で,
一般的に,
- 情報
- 警告
- デバッグ
- トレース
アプリケーション,
- アプリケーション
アプリケーション開発者が出力したい情報を,
ログとして出力します。標準出力や標準エラー出力へログを出力することはなく, ログを出力するライブラリか, Javaに含まれるロギングAPIをアプリケーション開発者が使用して, それらに含まれるログレベルごとに用意されたAPIを使用してログを出力します。 - APサーバ
「処理の受付と終了のログ」 や 「外部接続の開始と終了のログ」 などを出力しますが, どのようなログを出力できるかはAPサーバごとに異なります。どのログを, どのレベルで出力するかは, APサーバの設定ファイルや設定画面で設定します。アプリケーションがアプリケーションサーバのログ機構を使用する場合にも, 同様に設定します。 - JVM
ガベージコレクション
(GC) やクラスのロードなど, アプリケーションを動かすためにどのような処理をしたかを出力します。ログを出力するには, JVMの起動オプションを追加してJavaプロセスを起動します。たとえば, 起動オプションとして-verbose:gcを追加すると, GCログを有効化します。一部の設定は, この後の紹介するJMXを使用しても設定できます。
JMXとMBean
「処理を受け付けた件数」
以下の手順で,
- JMXを使用してJavaプロセスへアクセスできるように設定する
- JMXクライアントを使用して,
MBeanサーバへ接続する - MBeanの名前を指定することで,
MBeanへアクセスする
MBeanは,
1. JMXを使用して, Javaプロセスへアクセスできるように設定する
同一のOSの上で動いているJavaプロセス
追加する VMオプション
-Dcom.sun.management.jmxremote
ポート番号や認証の有無,