プライマリ・コンテンツに移動
Java Platform, Standard Editionツール・リファレンス
リリース10
E94992-01
目次へ移動
目次

前
次

jstatd

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文字列にその一意のサーバー名を含める必要があります。

-Joption

このオプションは、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のインスタンスをインストールします。そのため、セキュリティ・ポリシー・ファイルを指定する必要があります。ポリシー・ファイルは、デフォルトのPolicyの実装とポリシー・ファイルの構文に関する項に準拠する必要があります。

セキュリティの問題について、カスタマイズしたポリシー・ファイルでも対処できない場合は、jstatdサーバーを実行せずに、jstatjpsツールをローカルで使用することが最も安全な方法になります。ただし、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