jstatd(1)

名前
jstatd - 仮想マシンjstatデーモン

    o   形式

    o   パラメータ

    o   説明

    o   オプション

    o   セキュリティ

    o   リモート・インタフェース

    o   例

    o   関連項目

形式

jstatd [ options ]

パラメータ

    options
        コマンドライン・オプション。オプションは任意の順序で指定できます。重複または矛盾するオプションがある場合、最後に指定したオプションが優先されます。

説明

jstatdツールは、計測されたHotSpot Java仮想マシン(JVM)の作成と終了を監視し、ローカル・システム上で実行されているJava仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供するRMIサーバー・アプリケーションです。

jstatdサーバーでは、ローカル・ホストにRMIレジストリが存在することが必要になります。jstatdサーバーは、デフォルト・ポートまたは-p portオプションで指定されたポート上のRMIレジストリに接続しようとします。RMIレジストリが見つからない場合、-p portオプションで指定されたポート、または-p portが省略されている場合は、デフォルトRMIレジストリにバインドされたjstatdアプリケーション内に、1つのRMIレジストリが作成されます。内部RMIレジストリの作成は、-nrオプションを指定することによって禁止することができます。

注意:このユーティリティはサポート対象外であり、将来のJDKのバージョンでは利用できなくなる可能性があります。現在、Windows 98およびWindows MEプラットフォームでは使用できません。

オプション

jstatdコマンドは次のオプションをサポートしています。

    -nr 既存のRMIレジストリが見つからない場合、jstatdプロセス内に内部RMIレジストリを作成しないようにします。

    -p  port
        RMIレジストリがあると予想されるポート番号です。見つからない場合は、-nrが指定されていなければ作成されます。

    -n  rminame
        RMIレジストリにおいて、リモートRMIオブジェクトがバインドされる名前です。デフォルト名はJStatRemoteHostです。複数のjstatdサーバーが同じホスト上で起動している場合、各サーバーのエクスポートしたRMIオブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、監視クライアントのhostidおよびvmid文字列に、その一意のサーバー名を含める必要があります。

    -Joption
        javacが呼び出すjava起動ツールに、optionを渡します。たとえば、-J-Xms48mと指定すると、スタートアップ・メモリーは48Mバイトに設定されます。-Jを使用して、Javaで記述されたアプリケーションを実行する背後のVMにオプションを渡すことは、よく行われています。

セキュリティ

jstatdサーバーは、適切なネイティブ・アクセス権を持つJVMのみを監視できます。したがって、jstatdプロセスは、ターゲットJVMと同じユーザー資格で実行されている必要があります。UNIX(tm)ベースのシステムにおけるrootユーザーなどの一部のユーザー資格は、システム上の任意のJVMによってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行されているjstatdプロセスは、システム上のすべてのJVMを監視できますが、セキュリティ上の別の問題が起こります。

jstatdサーバーには、リモート・クライアントの認証機能がありません。そのため、jstatdサーバー・プロセスを実行すると、jstatdプロセスがアクセス権を持つすべてのJVMによるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザーに公開することになります。この無防備な状態は、環境によっては望ましくない場合があるので、特に実稼働環境または安全でないネットワークでは、jstatdプロセスを起動する前に、ローカル・セキュリティ・ポリシーを検討する必要があります。

jstatdサーバーは、他のセキュリティ・マネージャがインストールされていない場合には、RMISecurityPolicyのインスタンスをインストールします。そのため、セキュリティ・ポリシー・ファイルを指定する必要があります。ポリシー・ファイルは、デフォルト・ポリシー実装の ポリシー・ファイルの構文 @
http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.htmlに準拠する必要があります。

次のポリシー・ファイルでは、セキュリティ例外を発生せずにjstatdサーバーを実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度が低いですが、jstatdサーバーを実行するために最低限必要なアクセス権のみを認めるポリシーよりも自由度が高くなっています。

grant codebase "file:${java.home}/../lib/tools.jar" {

   permission java.security.AllPermission;

};

このポリシーを使用するには、このテキストをjstatd.all.policyというファイルにコピーし、次のようにjstatdサーバーを実行します。

jstatd -J-Djava.security.policy=jstatd.all.policy

より厳しいセキュリティを実施するサイトの場合、カスタム・ポリシー・ファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。ただし、このような方法は、IPアドレスの盗聴攻撃を受けやすくなります。セキュリティの問題について、カスタマイズしたポリシー・ファイルでも対処できない場合は、jstatdサーバーを実行せずに、jstatとjpsツールをローカルで使用することが最も安全な方法になります。

リモート・インタフェース

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の起動を表しています。

rmiregistry 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レジストリがすでに実行されていると想定しています。実行されていない場合は、適切なエラー・メッセージが表示されます。

jstatd -J-Djava.security.policy=all.policy -nr

  RMIログ機能の有効化

この例は、RMIログ機能を有効にしたjstatdの起動を表しています。この方法は、トラブルシューティングまたはサーバー活動の監視に役立ちます。

jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true

関連項目

    o   java(1) - Javaアプリケーション起動ツール

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

    o   jstat(1) - Java仮想マシン統計データ監視ツール

    o   rmiregistry @
        http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#rmi - Javaリモート・オブジェクト・レジストリ