UbuntuでJava visualVMを使用してJavaプログラムのパフォーマンス分析を行う

3473 ワード

Java visualVMを使用する理由:
体積が小さく、メモリを消費せず、操作が簡単で、機能がそろっている.Java visualVMと他の性能テストツールの比較については、ネット上で多くの記事があるので、検索してみましょう.
1.jstatdのsecurity policyファイルをサーバに構成します.
jstatdは、JVM(Java Virtual Machine、Java仮想マシン)の作成から破棄までのリソース使用状況を監視し、リモート監視インタフェースを提供するRMIです.(Remote Method Invocation、リモートメソッド呼び出し)サービスプログラム.Deamonプログラムです.リモートモニタリングソフトウェアがローカルに接続されていることを保証するには、常にjstatdの実行を維持する必要があります.jstatdの実行には-J-Djava.security.policy=(ファイルのパス名で、このファイルはセキュリティポリシーを指定しています).サーバにこのファイルを作成する必要があります.ファイルは勝手に名前をつけることができます.ここではjstatdと名付けます.policy.ファイルの内容は次のとおりです.
grant codebase "file:${java.home}/../lib/tools.jar"{
  permission java.security.AllPermission;
};

ここではコピーはお勧めしません.半角やフィレット記号によるエラーを避けるために、手で叩くことをお勧めします.また、コンテンツはこのようにしなければなりません.そうしないと、エラーが発生し、プロンプトに権限がありません.
Could not create remote object
  access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
    java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses"
    at......

2.サーバhostsファイルのIPアドレスの変更
Java visualVMをサーバに正常に接続するには、サーバ側が/etc/hostsファイルでローカルアドレスを127.0.0.1ではなく実際のIPアドレス(192.168.3.123など)に設定しているため、hostname-iを使用して確認し、viで変更できます.
3.サーバを表示するマシンでJvisualVMを起動する
  1.まず、JvisualVMをインストールします.
sudo apt-get install jvisualvm

  2.JvisualVMを実行します.Javaのパスを追加する必要があります.
jvisualvm --jdkhome ${JAVA_HOME}

注意:${JAVA_HOME}とは、UbuntuシステムにおけるJDKの環境変数のこと
4.サーバ上でjstatdプログラムを実行する
jstatd -J-Djava.security.policy=jstatd.policy

注意:ここのjstatd.ポリシーは、作成したばかりのセキュリティポリシーに関するファイル名であり、/usr/lib/jstatdなどのファイルのパスを指定する必要があります.policy
RMIログ機能が必要な場合は、起動パラメータ-J-Djavaを追加することもできます.rmi.server.logCalls:
jstatd -J-Djava.security.policy=jstatd.policy -J-Djava.rmi.server.logCalls=true

その後、このサーバ上のJVMの稼働状況を確認できます.
5.Java JvisualVMによるサーバへの接続
Java visualVMプログラムウィンドウ左側の「リモート」項目右クリック「リモートホストの追加」を選択し、ポップアップダイアログボックスにリモートホストのIPアドレスを入力し、コミットを確認すると対応するホストと上で実行されているJavaプログラムが表示され、接続に成功するとそのホスト上で実行されているJstatdマシンPIDが表示されます.
以上の方法でサーバーに接続して一つの問題があって、サーバーのCPUの使用状況を監視することができなくて、私達にJMXを創立することを提示して、資料を調べて発見して、サーバーでjstatdを起動してJMXのパラメータに参加することができます:
jstatd -J-Djava.rmi.server.hostname=192.168.3.123  -J-Djava.security.policy=jstatd.policy  -J-Dcom.sun.management.jmxremote.port=4444 -J-Dcom.sum.management.jmxremote.ssl=false  -J-Dcom.sun.management.jmxremote.authenticate=false

注意:上記のスクリプトは1行で、自分で改行しないでください.そうしないと、jstatdを起動できません.次のようになります.
  -J-Djava.rmi.server.hostnameはサーバのアドレスを表す.
  -J-Djava.security.policyは、使用するセキュリティポリシーファイルのパスを表します.
  -J-Dcom.sun.management.jmxremote.portは、露出サーバJVMが他の機器に与えるポート番号を示す.
    -J-Dcom.sum.management.jmxremote.ssl=falseはRMX伝送を暗号化しないことを示す
  -J-Dcom.sun.management.jmxremote.authenticate=falseは、他のマシンがサーバに接続する際に検証する必要がないことを示し、trueの場合はサーバに接続する際にパスワードを入力する必要があります
このスクリプトは、現在のコマンドラインをブロックします.ブロックしたくない場合は、最後にスペースを入力し、&記号を追加します.このコマンドは、バックグラウンドにジョブとして追加されます.
jstatd -J-Djava.rmi.server.hostname=192.168.3.123  -J-Djava.security.policy=jstatd.policy  -J-Dcom.sun.management.jmxremote.port=4444 -J-Dcom.sum.management.jmxremote.ssl=false  -J-Dcom.sun.management.jmxremote.authenticate=false &

このように起動したらどうやって停止しますか?ここを見てください.http://soft.chinabyte.com/os/379/12244379.shtml
上記の手順に従って、リモート・サーバのJVMを把握できます.