Java

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

投稿日:2013/09/20 更新日:

まれに、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というファイルがあると思いますので起動してください。
起動したら↓のような画面が表示されると思いますので、リモートプロセスの部分を入力します。
console
IPアドレス:JVMポート番号のように指定します。
取り急ぎ、ユーザー名とパスワードは未入力で、接続ボタンをクリックすると、下のような監視画面が表示されます。
monitor

まとめ

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

-Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

Maven2でwarを実行すると2回目がエラーになる

Mavenでwar:warを実行してWARファイルを作成することがあると思います。 1回目はうまくいくのですが、続けて実行すると失敗してしまいました。 試しに、target以下の作成されたWARファイ …

no image

Mavenでコンパイル時のJDKバージョンを指定する方法

久々にMavenを使う機会がありjar:jarを実行したら、コンパイルエラーが出力されてjarファイルが生成できませんでした。 コンパイルしているマシンがJava7で、どうもJava7で文字コード関連 …

Spring MVCのコントローラーで任意のステータスコードを返す方法

Spring MVCにかぎらずなんですが、URIリソースが見つからない場合は、適切なステータスコードを返してブラウザにお知らせする必要があると思います。 例えば、マッピングには一致したが指定された条件 …

SpringMVCでPagenationを実装する方法

最近、SpringMVCを使って色々作っておりました。 今まで色々なフレームワークを触って、その度に挫折していましたが、SpringMVCは使えると思うように至りました。 業務ではないのですが、Spr …

no image

JavaからTwitter4jを使ってタイムラインを表示してみる

今、Playframework2でTwitterアプリを作っています。 ですが、最初にTwitterの準備をしなければならないことがわかりました。 JavaでTwitterを操作するのであれば・・・。 …