blog

jpsとjstatd

jpsの仮想マシンのプロセスステータスツールは、unixのようなpsコマンドの名前だけでなく、その機能とpsも非常によく似ています:実行中の仮想マシンのプロセスのリスト、および名前のメインクラス(クラ...

Nov 5, 2020 · 3 min. read
シェア

jps(Java仮想マシンプロセスステータスツール)

jpsの仮想マシンプロセスステータスツールは、unixのようなpsコマンドの名前だけでなく、その機能とpsも非常によく似ています:実行中の仮想マシンプロセスのリスト、およびメインクラスを実行するために仮想マシンを表示するクラス)名だけでなく、これらのプロセスと、ローカルの仮想マシンの一意のID(LVMID、ローカル仮想マシン識別子)。LVMIDは、下図のPID(Process Identifier)と同じです。あなたが同時に複数の仮想マシンのプロセスを起動する場合は、プロセス名によって見つけることができない、その後、唯一の関数のメインクラスを区別するために表示するjpsコマンドに頼ることができます。

コマンドフォーマット:

usage: jps [-help]
 jps [-q] [-mlvV] [<hostid>]
Definitions:
 <hostid>: <hostname>[:<port>]
-q メイン・クラスの名前を省略して、LVMIDだけを出力する 
-m VMプロセス起動時に、メイン・クラスのmain()関数に渡されたパラメータを出力する;
-l メイン・クラスのフルネーム、またはプロセスがjarパッケージを実行する場合はjarへのパスを出力する;
-v 仮想マシン・プロセスの開始時に、JVMパラメーターを出力する;
-V フラグ・ファイルを介してJVMに渡されたパラメーターを出力する;
-Joption JVMにパラメーターを渡す。:-J-Xms48m;
 hostidという形式である:<hostname>[:<port>]デフォルトのポートを指定しない場合、もう一方のポートは次のとおりである:ランダムなポートのセキュリティグループを照会するか、ファイアウォールがこのポートを開き、ポートのデフォルトは1099であり、サーバーのjstatdサービスを起動する必要があり、そうでない場合は、プロンプトが表示される。
 RMI Server JStatRemoteHost not available

jstatd (Java 統計監視デーモン)

jstatdコマンドは、JVMの作成と終了を監視するRMIサーバー・アプリケーションで、リモート監視ツール用のアタッチ可能なインターフェースも提供します。

コマンドフォーマット:

usage: jstatd [-nr] [-p port] [-n rminame]
-nr 既存のRMIレジストリが見つからない場合、内部RMIレジストリの作成は試みられない;
-p port デフォルトは1099である;
-n rminame デフォルトはJStatRemoteHostである。複数のjstatdサービスが同じホスト上で起動する場合、rminameはjstatdサービスを一意に識別する;
-J jvm 
サーバーを直接起動すると、jstatdは次のような例外を報告する。
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 write)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.System.setProperty(System.java:727)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)

これは、jstatdにセキュリティ・ポリシーが割り当てられていないためで、以下の内容のセキュリティ・ポリシー・ファイル(カスタム名jstatd.all.policy)を作成する必要があります:

grant codebase "file:${java.home}/../lib/tools.jar" {
 permission java.security.AllPermission;
};

注:java.homeで、この戦略は、JAVAHOMEは概念ではなく、子供の靴はそれを間違っていない、ここでjava.homeは、JREのパスを指し、これはJavaのシステム属性であり、手動で指定する必要はありません、通常、このjdkは、jreのパスの下に、つまり、あなたが考えることができると{JAVAHOME}/jreは、等価である、したい場合この変数の値を表示する場合は、実行中のJavaアプリケーションを見つけることができます、そのPIDを検索し、次のjinfoコマンドを介してjava.homeの値を表示することができます:

jinfo ${PID}|grep java.home

次のコマンドを実行することで、jstatdサービスを開始できます。

jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=ip &

hostnameサーバの外部IPを指定します。

jstatdが起動すると、2つのポートを開きます。1つはパラメータ"-p "で指定でき、指定しない場合はデフォルトの1099になります:

クエリーランダムポート

netstat -anp | grep jstatd

このポートを開くセキュリティグループまたはファイアウォール



Read next

興味深いシナリオ:どのようにバックエンドとJSの助けを借りずにCSSを使用してリストの番号付けを逆にするだろうか?

私は逆順のリストを持っているプロジェクトに取り組んでいます。リストは降順で作成され、私は意味的にも視覚的にもこれを反映したいと考えています。ネットで調べてみると、面白いソリューションがいくつか見つかりました。 次に、どのような実装があるか見てみましょう。 最もシンプルでわかりやすいソリューションは...

Nov 5, 2020 · 4 min read