名前
jstatd - 計測されたJava HotSpot VMの作成と終了のモニター
シノプシス
ノート:このコマンドは試験的であり、サポートされていません。
jstatd
[options]
- options
- これは、
jstatd
コマンド行オプションです。 「jstatdコマンドのオプション」を参照してください。
説明
jstatd
コマンドはRMIサーバー・アプリケーションであり、計測されたJava HotSpot VMの作成と終了をモニターし、リモート・モニター・ツール(jstat
およびjps
)がローカル・システム上で実行されているJVMに接続してJVMプロセスの情報を収集できるようにするインタフェースを提供します。
jstatd
サーバーには、ローカル・ホスト上のRMIレジストリが必要です。 jstatd
サーバーは、デフォルト・ポートまたは-p
port
オプションで指定したポート上のRMIレジストリに接続しようとします。 RMIレジストリが見つからない場合は、-p
port
オプションで指定されたポート(-p
port
オプションが省略されている場合はデフォルトのRMIレジストリ・ポート)にバインドされたjstatd
アプリケーション内にRMIレジストリが1つ作成されます。 内部RMIレジストリの作成は、-nr
オプションを指定することによって停止できます。
jstatdコマンドのオプション
-nr
- このオプションは、既存のRMIレジストリが見つからない場合、
jstatd
プロセス内に内部RMIレジストリを作成しないようにします。 -p
port- このオプションは、RMIレジストリがあると予想されるポート番号を設定します。見つからない場合は、
-nr
オプションが指定されていなければ作成されます。 -n
rminame- このオプションは、RMIレジストリにおいて、リモートRMIオブジェクトがバインドされる名前を設定します。 デフォルト名は
JStatRemoteHost
です。 複数のjstatd
サーバーが同じホスト上で起動している場合、各サーバーのエクスポートしたRMIオブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。 ただし、そのようにする場合は、モニタリング・クライアントのhostid
およびvmid
文字列にその一意のサーバー名を含める必要があります。 -J
option- このオプションは、JVMにJavaの
option
を渡します(optionは、Javaアプリケーション・ランチャのリファレンス・ページに記載されているオプションのいずれかです)。 たとえば、-J-Xms48m
と指定すると、スタートアップ・メモリーは48Mバイトに設定されます。 javaを参照してください。
セキュリティ
jstatd
サーバーは、適切なネイティブ・アクセス権を持つJVMのみをモニターできます。 したがって、jstatd
プロセスは、ターゲットJVMと同じユーザー資格で実行されている必要があります。 Oracle Solaris、Linux、およびOS Xオペレーティング・システムのrootユーザーなどのユーザー資格証明には、システム上の任意のJVMによってエクスポートされたインストゥルメンテーションにアクセスする権限があります。 このような資格で実行されているjstatd
プロセスは、システム上のすべてのJVMをモニターできますが、セキュリティ上の別の問題が起こります。
jstatd
サーバーには、リモート・クライアントの認証機能がありません。 そのため、jstatd
サーバー・プロセスを実行すると、jstatd
プロセスがアクセス権を持つすべてのJVMによるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。 この無防備な状態は、環境によっては望ましくない場合があるので、特に本番環境または安全でないネットワークでは、jstatd
プロセスを起動する前に、ローカル・セキュリティ・ポリシーを検討する必要があります。
jstatd
サーバーは、他のセキュリティ・マネージャがインストールされていない場合には、RMISecurityPolicy
のインスタンスをインストールします。そのため、セキュリティ・ポリシー・ファイルを指定する必要があります。 ポリシー・ファイルは、デフォルト・ポリシーの実装とポリシー・ファイルの構文に準拠している必要があります。
セキュリティの問題について、カスタマイズしたポリシー・ファイルでも対処できない場合は、jstatd
サーバーを実行せずに、jstat
とjps
ツールをローカルで使用することが最も安全な方法になります。 ただし、jps
を使用して計測されたJVMのリストを取得する場合、Dockerコンテナ内で実行されているJVMはリストに含まれません。
リモート・インタフェース
jstatd
プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。 ユーザーおよび開発者は、このインタフェースへの書込みを行わないでください。
例
jstatd
コマンドの例を次に示します。 jstatd
スクリプトによって、サーバーはバックグラウンドで自動的に起動します
内部RMIレジストリ
この例は、内部RMIレジストリを使ってjstatd
セッションを開始する方法を示しています。 この例では、デフォルトのRMIレジストリ・ポート(ポート1099
)には、他のサーバーはバインドされていないと想定しています。
jstatd -J-Djava.security.policy=all.policy
外部RMIレジストリ
この例は、外部RMIレジストリを使用してjstatd
セッションを開始しています。
rmiregistry& jstatd -J-Djava.security.policy=all.policy
この例は、ポート2020
上の外部RMIレジストリ・サーバーを使用してjstatd
セッションを開始しています。
jrmiregistry 2020& jstatd -J-Djava.security.policy=all.policy -p 2020
この例は、AlternateJstatdServerName
にバインドされたポート2020上の外部RMIレジストリを使用してjstatd
セッションを開始しています。
rmiregistry 2020& jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName
インプロセスRMIレジストリの作成の停止
この例は、RMIレジストリが見つからない場合にRMIレジストリを作成しないjstatd
セッションを開始しています。 この例では、RMIレジストリがすでに実行していると想定しています。 RMIレジストリが実行されていない場合は、エラー・メッセージが表示されます。
jstatd -J-Djava.security.policy=all.policy -nr
RMIロギングの有効化
この例では、RMIロギング機能を有効にしてjstatd
セッションを開始しています。 この方法は、トラブルシューティングまたはサーバー活動のモニタリングに役立ちます。
jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true