jvisualvm でリモート接続

jdk をインストールすると付いてくる便利なプロファイラ jvisualvm でリモートサーバの java プロセスに接続する方法についての覚書

jvisualvm でリモート接続する方法は、
jstatd(これも jdk 組み込み)という java プロセスの監視ツールを経由する方法と JMX という仕様を利用する方法の2種類がある
今回はリモートサーバに jdk が入ってなかったので JMX でやる場合

JMX 起動オプション

リモートサーバで java アプリを起動する際に以下のオプションを指定しておく(以下は jdk8 の場合)
port は他で使われてなければ何でも良いが、同じ値を指定する
127.0.0.1 は環境に合わせて変える

-Dcom.sun.management.jmxremote.port=3333
-Dcom.sun.management.jmxremote.rmi.port=3333
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=127.0.0.1

今回接続する際は ssh のポートフォワーディングを利用した
ssh -L 3333:127.0.0.1:3333 user@remote-server
などでリモートへの接続を開いておき jvisualvm から localhost:3333 に対して繋ぐ