jstatd(1)

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

形式
jstatd [options]

パラメータ

options
    コマンド行オプション。オプションは任意の順序で指定できます。冗長または矛盾するオプションがあった場合は、最後に指定されたオプションが優先されます。

機能説明
jstatd ツールは、計測機構付き HotSpot Java 仮想マシン (JVM) の作成と終了を監視する RMI サーバーアプリケーションであり、リモート監視ツールがローカルホスト上で実行している JVM にアタッチするためのインタフェースを備えています。

jstatd サーバーが機能するためには、ローカルホスト上に RMI レジストリが存在する必要があります。jstatd サーバーは、デフォルトポートまたは -p port オプションによって示されたポート上の RMI レジストリへのアタッチを試みます。RMI レジストリが見つからなかった場合は、 -p port オプションによって示されたポートにバインドされた jstatd アプリケーション内で作成され、 -p port が省かれた場合はデフォルトの RMI レジストリにバインドされた jstatd アプリケーション内で作成されます。内部 RMI レジストリの作成は、 -nr オプションを指定することによって禁止できます。

注 - このユーティリティはサポートされていないため、JDK の将来のバージョンでは使用できない可能性があります。現時点では、Windows 98 および Windows ME プラットフォームでは使用できません。

オプション
jstatd コマンドは、以下のオプションをサポートします。

-nr 既存の RMI レジストリが見つからないときに、 jstatd プロセス内での内部 RMI レジストリの作成を試みません。

-p port
    RMI レジストリを探すポート番号。または、RMI レジストリが見つからず、 -nr が指定されなかった場合に、RMI レジストリが作成されるポート番号。

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

-Joption
    option を javac によって呼び出された java 起動ツールに渡します。たとえば、 -J-Xms48m は、起動メモリを 48M バイトに設定します。Java で作成された下層の VM 実行アプリケーションにオプションを渡すのが、 -J の一般的規則です。

セキュリティ

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

この例は、ポート 2020 上の、AlternateJstatdServerName という名前にバインドされた外部 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

関連項目

    *   java - Java アプリケーション起動プログラム

    *   jps - Java 仮想マシンプロセスステータスツール

    *   jstat - Java 仮想マシン統計監視ツール

    *   rmiregistry - Java リモートオブジェクトレジストリ