Tomcatのメモリ使用量をjconsoleを使って監視する方法

まれに、Tomcatのメモリ使用量をリアルタイムで知りたいということが無いでしょうか。
管理人はたまにあります・・・。

JDK5か6以降jconsoleという便利なツールが追加されまして、それを使って監視というか見ることができるので今回はそのやり方を書いてみたいと思います。

環境

クライアント:Windows7 64bit JDK7
サーバー:CentOS6 64bit JDK7

サーバー側(CentOS)の準備

Tomcatの起動オプションに以下を追加します。

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=任意のポート番号
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

見やすくするため改行していますが、実際はコマンドオプションなので改行は含めないでください。
portは未使用のポートで、あと多分ウェルノウンポートはダメだと思います。rootユーザーで起動するのであればOKかもしれませんが・・・。
※指定したポート番号は、iptablesなどで接続できるようにしておく必要があります。

次に、以下のコマンドを発行してみてください。

hostname -i

127.0.0.1と帰ってきた人は、接続できないと思います。
こちらのブログにも書いてあるみたいですが、グローバルIP、ローカルIPが帰ってくる必要があるみたいです。
Linuxで起動したTomcatにJMXで接続できない問題
管理人は/etc/hostsを変更して、自身のローカルIPを返すように変更しました。 RDMSなのでIP認証で127.0.0.1を許可してある設定をしている人は、ローカルIPが変わるので接続できないみたいなことを言われるかもしれません・・・。

クライアント側(Windows)でjconsoleの起動

特に準備は必要ありません。
JDKをインストールしたフォルダのbinというフォルダにjconsole.exeというファイルがあると思いますので起動してください。
起動したら↓のような画面が表示されると思いますので、リモートプロセスの部分を入力します。 f:id:beeete2:20160708232248p:plain IPアドレス:JVMポート番号のように指定します。 取り急ぎ、ユーザー名とパスワードは未入力で、接続ボタンをクリックすると、下のような監視画面が表示されます。 f:id:beeete2:20160708232320p:plain

まとめ

muninなどでグラフ化できるといいんですけどね。 探してみようかな・・・。