今お忙しいですか?
2008.09.10
以前も取り上げたことがあるのですが、Java の M(X)Bean による管理(JMX)の話です。
非同期なタスクを専門で処理させるプロセスを立てて、Web アプリ側ではその処理の依頼をするだけ....という格好で構築しているのですが、この非同期処理を java.util.concurrent.ExecutorService が実現するワーカスレッドで動かしています.....で、以前はこのワーカスレッドを
どうやって、graceful に終了させるか?
という問題を解決するために、M(X)Bean を使ってみたわけです。
....結構これ好評でした(Thanks)。で、その延長線上として、
- 1. 今処理が忙しいかどうか問い合わせて、忙しかったら予約実行・忙しくなかったら即時実行...とできるというのもいいな。
- 2. 管理の補助手段として、イマの JVM の状態をモニターできたらいいな。
というようなネタが上がってきました。で、これらもやっぱり
M(X)Bean で行こう
というのが今回のネタです。
まあ、1. は実際には現在の処理中スレッドをモニタする問い合わせを新規に作るわけですから、以前のシャットダウンと同じような話です。でも、実装するとリアルタイムに処理状況をモニタできて、すごく楽しいです(笑)。
問題は 2. ですね。実はですね、これうまくやれば、
- 空き物理メモリの量
- 最後に GC してからの経過秒
- ヒープのサイズと使用率
- デッドロックしているスレッドがあるか
- メモリPool の個別(Eden/Suvivor/Tenured/CodeCache/PermGen)の割り当て量と利用率
というような、管理&チューン項目が、ごく簡単に手に入ってしまうのです。
これらの項目は、JDK1.5 以降に付属する jconsole というツールで確認できるものなのですが、
運営サーバはファイアウォールに守られたドメインの奥深くだから...
でも、通常の Webサーバに管理を追加して、あるいは、HtmlAdaptorServer を使えばそのままで...で HTTP による管理が出来ちゃうわけです。結構コレ凄い..というか、そもそも、
jconsole は単なる MXBean のブラウザに過ぎない
という設計の良さが光りますね。まだ、jconsole を使ったことがない方は一度使ってみると、
....この機能を Web アプリから見れたらイイな!
と思うのではないかと思います。それ、すごく簡単です。ぜひぜひやってご覧あれ。
投稿者 : 杉浦 こずえ | 投稿日時 : 2008.09.10 09:59





