名前
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レジストリを作成しないようにします。
- -pport
- このオプションは、RMIレジストリがあると予想されるポート番号を設定します。見つからない場合は、-nrオプションが指定されていなければ作成されます。
- -rrmiport
- このオプションは、RMIコネクタがバインドされるポート番号を設定します。 指定しない場合、使用可能なランダムなポートが使用されます。
- -nrminame
- このオプションは、RMIレジストリにおいて、リモートRMIオブジェクトがバインドされる名前を設定します。 デフォルト名はJStatRemoteHostです。 複数のjstatdサーバーが同じホスト上で起動している場合、各サーバーのエクスポートしたRMIオブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。 ただし、そのようにする場合は、モニタリング・クライアントのhostidおよびvmid文字列にその一意のサーバー名を含める必要があります。
- -Joption
- このオプションは、JVMにJavaのoptionを渡します(optionは、Javaアプリケーション・ランチャのリファレンス・ページに記載されているオプションのいずれかです)。 たとえば、-J-Xms48mと指定すると、スタートアップ・メモリーは48Mバイトに設定されます。 javaを参照してください。
セキュリティ
jstatdサーバーは、適切なネイティブ・アクセス権を持つJVMのみをモニターできます。 したがって、jstatdプロセスは、ターゲットJVMと同じユーザー資格で実行されている必要があります。 LinuxおよびOS Xオペレーティング・システムのrootユーザーなどの一部のユーザー資格証明には、システム上の任意のJVMによってエクスポートされたインストゥルメンテーションにアクセスする権限があります。 このような資格で実行されているjstatdプロセスは、システム上のすべてのJVMをモニターできますが、セキュリティ上の別の問題が起こります。 
jstatdサーバーには、リモート・クライアントの認証機能がありません。 そのため、jstatdサーバー・プロセスを実行すると、jstatdプロセスがアクセス権を持つすべてのJVMによるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。 この無防備な状態は、環境によっては望ましくない場合があるので、特に本番環境または安全でないネットワークでは、jstatdプロセスを起動する前に、ローカル・セキュリティ・ポリシーを検討する必要があります。 
セキュリティ上の理由から、jstatdサーバーはRMI ObjectInputFilterを使用して、必須クラスのみを直列化復元できるようにします。
セキュリティ上の懸念に対処できない場合、最も安全なアクションは、jstatdサーバーを実行せず、jstatおよびjpsツールをローカルで使用することです。 ただし、jpsを使用して計測されたJVMのリストを取得する場合、Dockerコンテナ内で実行されているJVMはリストに含まれません。 
リモート・インタフェース
jstatdプロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。 ユーザーおよび開発者は、このインタフェースへの書込みを行わないでください。 
例
jstatdコマンドの例を次に示します。 jstatdスクリプトによって、サーバーはバックグラウンドで自動的に起動します 
内部RMIレジストリ
この例は、内部RMIレジストリを使ってjstatdセッションを開始する方法を示しています。 この例では、デフォルトのRMIレジストリ・ポート(ポート1099)には、他のサーバーはバインドされていないと想定しています。 
jstatd
外部RMIレジストリ
この例は、外部RMIレジストリを使用してjstatdセッションを開始しています。
rmiregistry&
jstatdこの例は、ポート2020上の外部RMIレジストリ・サーバーを使用してjstatdセッションを開始しています。
jrmiregistry 2020&
jstatd -p 2020この例では、ポート2020上の外部RMIレジストリ・サーバーと、ポート2021にバインドされたJMXコネクタとのjstatdセッションを開始します。
jrmiregistry 2020&
jstatd -p 2020 -r 2021この例は、AlternateJstatdServerNameにバインドされたポート2020上の外部RMIレジストリを使用してjstatdセッションを開始しています。
rmiregistry 2020&
jstatd -p 2020 -n AlternateJstatdServerNameインプロセスRMIレジストリの作成の停止
この例は、RMIレジストリが見つからない場合にRMIレジストリを作成しないjstatdセッションを開始しています。 この例では、RMIレジストリがすでに実行していると想定しています。 RMIレジストリが実行されていない場合は、エラー・メッセージが表示されます。 
jstatd -nr
RMIロギングの有効化
この例では、RMIロギング機能を有効にしてjstatdセッションを開始しています。 この方法は、トラブルシューティングまたはサーバー活動のモニタリングに役立ちます。 
jstatd -J-Djava.rmi.server.logCalls=true