統計機能を使用して、サーバーの現在の稼動状況を監視できます。統計情報は、サーバーが処理している要求数と、それらの要求の処理状況を示します。対話型サーバーモニターを通してサーバーが多数の要求を処理していることがわかる場合、要求数に合わせてサーバー設定またはシステムのネットワークカーネルを調整する必要がある場合もあります。統計情報の収集により Proxy Server へのオーバーヘッドが増えるため、デフォルトでは、統計情報は無効になっています。統計情報を有効にすると、サーバーは統計情報の収集および保存を開始します。
統計情報を使用可能にすると、次の分野の統計情報を表示できます。
接続
DNS *
KeepAlive
キャッシュ
サーバー要求
対話型サーバーモニターで総計をレポートするサーバーの各種統計情報については、オンラインヘルプの「Monitor Current Activity」ページを参照してください。
Proxy Server の統計情報の収集には、stats-xml と呼ばれる組み込み関数が使用されます。この関数はサーバーマネージャーから統計情報を表示する場合、または perfdump 関数を使用してレポートを生成する場合に有効にする必要があります。また、カスタム NSAPI 関数を使用して統計情報を監視するための条件であるプロファイリングを使用可能にするために、stats-xml 関数も使用します。サーバーで統計情報とプロファイリングを有効にすると、obj.conf ファイルの stats-init と呼ばれるサーバー関数が初期化され、統計の収集が開始されます。
Init profiling="on" fn="stats-init"
また、この命令により、ブラウザウィンドウから統計情報にアクセスできるようにする NameTrans 指令が作成されます。
NameTrans fn="assign-name" name="stats-xml" from="(/stats-xml|/stats-xml/.*)
最後に、統計情報の有効化により、NameTrans 指令が選択された場合に stats-xml 関数を処理する Service 指令が追加されます。
<Object name="stats-xml">
Service fn="stats-xml"
</Object>
統計情報が収集されると、obj.conf ファイルの Init 関数が更新されます。そのため、サーバーを停止および再起動して、これらの変更を有効にする必要があります。
次の例に、obj.conf ファイルの stats-init を示します。
Init profiling="on" fn="stats-init" update-interval="5"
また、次の値も指定できます。
update-interval: 統計の更新間隔 (秒)。値を高くすると (頻度を低くする)、パフォーマンスが向上します。最小値は 1、デフォルト値は 5 です。
profiling: NSAPI パフォーマンスのプロファイリングを有効にします。デフォルトは no です。no にすると、サーバーのパフォーマンスが多少向上します。ただし、ユーザーインタフェースから統計情報を有効にする場合、プロファイリングはデフォルトで有効になっています。
次の URL から stats-xml 出力を取得できます。
http://computer_name:proxyport /stats-xml/proxystats.xml
この要求は Proxy Server の統計情報を含む XML ページを返します。ブラウザによってはブラウザウィンドウにデータを表示できますが、データを外部ファイルに保存して、外部ビューアでデータを表示する必要のあるブラウザもあります。データ分析のためにさまざまなビューで表示する統計情報の分析機能がなければ、この情報がどれだけ役に立つかが、はっきりとはわかりません。サードパーティー製ツールを使うと、このプロセスをサポートできます。解析ツールを使用しない場合、サーバーマネージャーまたは perfdump SAF から stats-xml 出力を監視することをお勧めします。
サーバーの stats-xml 統計情報をブラウザに表示できるユーザーを制限する場合、/stats-xml URI 用の ACL を作成する必要があります。
ACL ファイルは、obj.conf ファイルの stats-xml オブジェクト定義でも参照されるようにする必要があります。たとえば、/stats-xml URI に名前付きの ACL を作成した場合、次のようにして、オブジェクト定義の PathCheck 文の中で ACL ファイルを参照するようにする必要があります。
<Object name="stats-xml">
PathCheck fn="check-acl" acl="stats.acl"
Service fn="stats-xml"
</Object>
パフォーマンスを監視する前に、Proxy Server で統計情報を有効にする必要があります。統計情報はサーバーマネージャーから、または obj.conf ファイルおよび magnus.conf ファイルを編集することにより行います。自動化されたツールを作成するユーザー、または監視と調整用にカスタマイズしたプログラムを作成するユーザーは、直接 stats-xml で作業する方がよい場合があります。
統計情報およびプロファイリングを有効にすると、サーバーのすべてのユーザーが統計情報を使用できるようになります。
サーバーマネージャーにアクセスし、「Server Status」タブをクリックします。
「Monitor Current Activity」をクリックします。
「Monitor Current Activity」ページが表示されます。
「Activate Statistics/Profiling」の「Yes」オプションを選択して、統計情報を有効にします。
「了解」をクリックします。
「Restart Required」をクリックします。
「Apply Changes」ページが表示されます。
「Restart Proxy Server」ボタンをクリックして、変更を適用します。
obj.conf ファイルのデフォルトオブジェクトの下に、次の行を追加します。
NameTrans fn="assign-name" name="stats-xml" from=" (/stats-xml|/stats-xml/.*)" |
次の Service 関数を obj.conf に追加します。
<Object name="stats-xml">
Service fn="stats-xml"
</Object>
stats-init SAF を obj.conf に追加します。
統計情報を有効にすると、サーバーインスタンスの稼動状況に関するさまざまな情報を得ることができます。統計情報は、機能別に分類されます。
この節では proxystats.xml データのサブセットをサーバーマネージャーで表示する方法について説明します。
合計、最大値、ピーク回数、Proxy Server との接続に関する情報の棒グラフ、DNS 処理、キープアライブ値、キャッシュ、サーバー要求を表示できます。
次の節では、各項目について取得できる情報の種類について説明します。
サーバーマネージャーから次の接続統計情報を利用できます。
接続の合計数
キューに入る接続の最大数
キューに入る接続のピーク数
キューに入っている現在の接続の数
プロセス数
サーバーマネージャーから次の DNS 統計情報を利用できます。
最大 DNS キャッシュエントリ
プロセス数
DNS キャッシュのヒット数 (棒グラフとしても表示)
DNS キャッシュの欠落数 (棒グラフとしても表示)
サーバーマネージャーから次のキープアライブ統計情報を利用できます。
最大キープアライブ接続
キープアライブタイムアウト
プロセス数
キープアライブのヒット数 (棒グラフとしても表示)
キープアライブのフラッシュ数 (棒グラフとしても表示)
キープアライブの拒否数 (棒グラフとしても表示)
キープアライブのタイムアウト数 (棒グラフとしても表示)
サーバーマネージャーから次のサーバー統計情報を利用できます。
要求の合計数
受信したバイト数
送信したバイト数
プロセス数
要求の HTTP サーバーコードによる分類 (棒グラフとしても表示)。たとえば、HTTP サーバーコード 200 は要求が遂行されたことを示します。
サーバーマネージャーにアクセスし、「Server Status」タブをクリックします。
「Monitor Current Activity」をクリックします。
「Select Refresh Interval」ドロップダウンリストから、更新間隔を選択します。
更新間隔は、表示される統計情報の更新間隔を示す秒数です。
「Select Statistics To Be Displayed」ドロップダウンリストから、表示する統計情報の種類を選択します。
統計情報の種類については、「サーバーマネージャーでの統計情報の表示」を参照してください。
「送信」をクリックします。
サーバーインスタンスが稼動中で、統計情報およびプロファイリングを有効にしている場合、選択した統計情報の種類を示すページが表示されます。このページは、更新間隔の値に応じて、5 〜 15 秒ごとに更新されます。
ドロップダウンリストからプロセス ID を選択します。
現在のアクティビティーはサーバーマネージャーから表示できますが、表示されるカテゴリはサーバーの調整に完全には関連していません。サーバーの調整には perfdump 統計情報をお勧めします。詳細については、次の節を参照してください。
perfdump ユーティリティーは Proxy Server に組み込まれた Server Application Function (SAF) であり、Proxy Server の内部統計情報からさまざまなパフォーマンスデータを収集し、ASCII テキストで表示します。perfdump ユーティリティーを使用することで、サーバーマネージャーから行うよりも幅広い統計情報を監視することができます。
perfdump ユーティリティーでは、統計情報が統合されます。単一のプロセスを監視するのではなく、統計情報をプロセス数で乗算するため、サーバーの全体像をより正確に把握することができます。
perfdump SAF は、 stats-xml 関数を有効にしてからのみ、有効にすることができます。
obj.conf ファイルのデフォルトオブジェクトの後に、次のオブジェクトを追加します。
<Object name="perf">
Service fn="service-dump"
</Object>
デフォルトオブジェクトに次の行を追加します。
NameTrans fn=assign-name from="/.perf" name="perf"
サーバーソフトウェアを再起動します。
http:// computer_name:proxyport/.perf に移動して、perfdump にアクセスします。
perfdump 統計情報を要求し、統計情報がブラウザで自動的に更新される頻度 (秒) を指定できます。次の例では、更新が 5 秒ごとに設定されています。
http:// computer_name:proxyport/.perf?refresh=5
次の例に、perfdump の出力例を示します。
proxyd pid: 6751 Sun Java System Web Proxy Server 4.0 B05/02/2005 15:32 (SunOS DOMESTIC) Server started Thu May 19 13:15:14 2005 Process 6751 started Thu May 19 13:15:14 2005 ConnectionQueue: ----------------------------------------- Current/Peak/Limit Queue Length 0/1/4096 Total Connections Queued 1 Average Queue Length (1, 5, 15 minutes) 0.00, 0.00, 0.00 Average Queueing Delay 0.09 milliseconds ListenSocket ls1: ------------------------ Address http://0.0.0.0:8081 Acceptor Threads 1 KeepAliveInfo: -------------------- KeepAliveCount 0/256 KeepAliveHits 0 KeepAliveFlushes 0 KeepAliveRefusals 0 KeepAliveTimeouts 0 KeepAliveTimeout 30 seconds SessionCreationInfo: ------------------------ Active Sessions 1 Keep-Alive Sessions 0 Total Sessions Created 48/128 DiskCacheInfo: ------------------ Hit Ratio 0/0 ( 0.00%) Misses 0 Cache files at startup 0 Cache files created 0 Cache files cleaned up 0 Native pools: --------------------------- NativePool: Idle/Peak/Limit 1/1/128 Work Queue Length/Peak/Limit 0/0/0 Server DNS cache disabled Async DNS disabled Performance Counters: ------------------------------------------------ ..........................Average Total Percent Total number of requests: 1 Request processing time: 0.2559 0.2559 default-bucket (Default bucket) Number of Requests: 1 (100.00%) Number of Invocations: 7 (100.00%) Latency: 0.2483 0.2483 ( 97.04%) Function Processing Time: 0.0076 0.0076 ( 2.96%) Total Response Time: 0.2559 0.2559 (100.00%) Sessions: ---------------------------- Process Status Function 6751 response service-dump |
これらのパラメータの詳細については、『Sun ONE Web Server 6.1 Performance Tuning, Sizing, and Scaling Guide』の第 2 章の「Using Statistics to Tune Your Server」を参照してください。
サーバーの perfdump 統計情報をブラウザに表示できるユーザーを制限する場合、/.perf URI 用の ACL を作成する必要があります。
ACL ファイルは、obj.conf ファイルの perf オブジェクト定義でも参照される必要があります。たとえば、/.perf URI に名前付きの ACL を作成した場合、次のようにして、オブジェクト定義の PathCheck 文の中で ACL ファイルを参照するようにする必要があります。
<Object name="perf">
PathCheck fn="check-acl" acl="perf.acl"
Service fn="service-dump"
</Object>
パフォーマンスバケットを使用すると、バケットを定義し、さまざまなサーバー関数にリンクすることができます。これらの関数のいずれかを呼び出すごとに、サーバーは統計データを収集し、それをバケットに追加します。たとえば、send-cgi と NSServletService は、それぞれ CGI と Java サーブレットの要求に使用される関数です。2 つのバケットを定義して CGI とサーブレットの要求に対して別々のカウンタを保持するか、または両方のタイプの動的コンテンツに対する要求をカウントするバケットを 1 つ作成することができます。この情報を収集するためにかかる負担はほとんどなく、サーバーパフォーマンスへの影響も通常はわずかです。この情報へはあとで perfdump ユーティリティーを使用してアクセスできます。
バケットには次の情報が格納されます。
バケットの名前: この名前はバケットを関数に関連付ける場合に使用します。
説明: バケットが関連付けられている関数の説明。
この関数の要求数: この関数を呼び出した要求の合計数。
関数が呼び出された回数: この数字は関数の要求数と一致しない場合があります。関数の中には 1 つの要求に対して複数回実行されることがあるためです。
関数の遅延またはディスパッチ時間: サーバーが関数の呼び出しに要した時間。
関数時間: 関数自体に費やされた時間。
default-bucket はサーバーにより事前に定義されています。default-bucket は、ユーザー定義のバケットに関連付けられていない関数の統計情報を記録します。
パフォーマンスバケットのすべての設定情報を、magnus.conf ファイルと obj.conf ファイルで指定する必要があります。デフォルトのバケットのみが、自動的に有効に設定されています。
まず、「perfdump ユーティリティーを使用した現在のアクティビティーの監視」の説明に従って、パフォーマンス測定を有効にする必要があります。
次の例は、magnus.conf ファイルで新しいバケットを定義する方法を示しています。
Init fn="define-perf-bucket" name="acl-bucket" description="ACL bucket"
Init fn="define-perf-bucket" name="file-bucket" description="Non-cached responses"
Init fn="define-perf-bucket" name="cgi-bucket" description="CGI Stats"
上の例では、acl-bucket、 file-bucket、および cgi-bucket の 3 つのバケットが作成されます。これらのバケットを関数に関連付けるには、パフォーマンスを測定する obj.conf に bucket=bucket-name を追加します。
例
PathCheck fn="check-acl" acl="default" bucket="acl-bucket"
...
Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file" bucket="file-bucket"
...
<Object name="cgi">
ObjectType fn="force-type" type="magnus-internal/cgi"
Service fn="send-cgi" bucket="cgi-bucket"
</Object>
バケットのサーバー統計情報には、perfdump ユーティリティーを使用してアクセスできます。パフォーマンスバケット情報は、perfdump によって返されるレポートの最後のセクションにあります。
レポートには次の情報が含まれています。
平均 (Average)、合計 (Total)、パーセント (Percent) の各列には、要求された各統計情報のデータが表示されます。
要求処理時間 (Request Processing Time) はサーバーがそれまでに受信したすべての要求を処理するために要した合計時間です。
要求数 (Number of Requests) は関数の要求の合計数です。
呼び出し数 (Number of Invocations) は、関数が呼び出された合計回数です。1 つの要求の処理中に、関数が何度も呼び出される場合があるため、この値は要求の数とは異なります。この行のパーセント列は、すべてのバケットの呼び出し回数の合計に基づいて計算されます。
遅延 (Latency) は Proxy Server が関数の呼び出しに要した時間 (秒) です。
関数処理時間 (Function Processing Time) は Proxy Server が関数の処理に費やした時間 (秒) です。Function Processing Timeと Total Response Time のパーセンテージは、Request Processing Time の合計に基づいて計算されます。
合計応答時間 (Total Response Time) は Function Processing Time と Latency の合計 (秒) です。
次の例に、perfdump を使用して入手できるパフォーマンスバケット情報の例を示します。
Performance Counters: ------------------------------------------------ Average Total Percent Total number of requests: 1 Request processing time: 0.2559 0.2559 default-bucket (Default bucket) Number of Requests: 1 (100.00%) Number of Invocations: 7 (100.00%) Latency: 0.2483 0.2483 ( 97.04%) Function Processing Time: 0.0076 0.0076 ( 2.96%) Total Response Time: 0.2559 0.2559 (100.00%) |