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://java.sun.com/javase/6/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://java.sun.com/javase/6/docs/technotes/tools/index.html#rmi - Java リモートオブジェクトレジストリ」