jstatd(1)

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

形式
jstatd [options]

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

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

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

パラメータ

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

オプション
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 サーバは、他にセキュリティマネージャがインストールされていない場合は、RMISecurityPolicy のインスタンスをインストールするので、セキュリティポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトのポリシー実装のポリシーファイル構文に従う必要があります。ポリシーファイルは、 -J-Djava.security.policy=fileで指定できます。

次のポリシーファイルでは、 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

より厳格なセキュリティを採用しているサイトでは、具体的なニーズに合わせて jstatd セキュリティポリシーをカスタマイズすることをお奨めします。

jstatd サーバは、適切なアクセス権を持っている JVM だけを監視できます。ただし、 jstatd はユーザレベルの認証や承認チェックは行いません。したがって、 jstatd
 サーバが適切なアクセス権を持っている JVM によってエクスポートされた計測機構へのアクセスを開きます。これにより、ネットワーク上の任意のユーザが、通常はアクセスできない JVM でも監視できます。環境によっては、このような露出が受け入れられない場合もあります。UNIX ベースのシステム上で root アクセス権でサーバを実行するなど、幅広い露出が可能なクレデンシャルで jstatd サーバを実行するときには、特に注意してください。

jstatd サーバによってもたらされる露出をなくすには、サーバを実行しないことですが、そのためには、あらゆる監視活動をローカルで行う必要があります。あるいは、セキュリティポリシーファイルをカスタマイズして、アクセスを特定の信頼できるホストに制限してください。

リモートインタフェース
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 -nr

  RMI ロギング機能の有効化
この例は、RMI ロギング機能を有効にして jstatd を起動する例を示しています。この方法は、障害追跡やサーバ活動の監視に役立ちます。

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

この例では、環境変数を設定するための Bourne シェル構文を使用しています。他のシェルやコマンドインタプリタでは別の構文が必要な場合があります。

関連項目
java(1), jps(1), jstat(1), rmiregistry(1)