perfdump ユーティリティーは Web Server に組み込まれた Server Application Function (SAF) であり、Web Server の内部統計情報からさまざまなパフォーマンスデータを収集し、ASCII テキストで表示します。perfdump 出力には、コマンド行の統計情報または管理コンソールで表示可能なすべての統計情報は表示されませんが、依然として便利なツールです。たとえば、管理サーバーが実行されていない場合でも、引き続き perfdump を使用できます。CLI 経由の perfdump 出力の表示 (これはデフォルトで有効になっている)、または URI 経由の perfdump 出力の表示 (これは有効にする必要がある) のどちらかが可能です。URI を有効にする場合は、perfdump URI へのアクセスを制御してください。そうしないと、ユーザーがその URI を表示できるようになります。
perfdump ユーティリティーでは、統計情報が統合されます。単一のプロセスを監視するのではなく、統計情報をプロセス数で乗算するため、サーバーの全体像を正確に把握することができます。
perfdump ユーティリティーで表示される情報のチューニングについては、「監視データに基づくサーバーのチューニング」を参照してください。
管理コンソール経由で、仮想サーバーの perfdump URI を有効にすることができます。
perfdump で表示される統計情報は、そのサーバー全体の情報です。ある仮想サーバーで perfdump を有効にすると、個別の仮想サーバーではなく、サーバー全体の統計情報が表示されます。
「共通操作」で、構成を選択します。
仮想サーバーを選択し、「仮想サーバーを編集」をクリックします。
「監視設定」タブをクリックします。
「プレーンテキストレポート」の「有効」チェックボックスを選択します。
レポートにアクセスするための URI を指定します。たとえば、/.perf とします。
「保存 」をクリックします。
構成を配備します。
perfdump にアクセスするには、仮想サーバー上の URI にアクセスします。
次に例を示します。http://localhost:80/.perf
perfdump 統計情報を要求し、統計情報がブラウザで自動的に更新される頻度 (秒) を指定できます。次の例では、更新が 5 秒ごとに設定されています。
http:// yourhost/.perf?refresh=5
次のコマンドを使用して stats-xml を有効にします。
./wadm enable-perfdump --user=admin-user --password-file= admin-password-file [--uri=uri]--config= config-name--vs=virtual-server-name
URI オプションを使用して pefdump URI を設定します。
wadm deploy-config コマンドを使用して構成を配備します。
perfdump にアクセスするには、仮想サーバー上の URI にアクセスします。
次に例を示します。http://localhost:80/.perf
perfdump 統計情報を要求し、統計情報がブラウザで自動的に更新される頻度 (秒) を指定できます。次の例では、更新が 5 秒ごとに設定されています。
http:// yourhost/.perf?refresh=5
URI に加えて、コマンド行インタフェース経由でも perfdump 出力にアクセスできます。これはデフォルトで有効になっています。URI 経由の perfdump 出力の表示とは異なり、コマンド行で perfdump 出力を表示するには、管理サーバーが実行されている必要があります。ただし、要求を処理するスレッドがサーバー内で (たとえば、ビジー状態のために) ハングアップしており、URI を使用できない場合でも、引き続き CLI 経由で perfdump 出力にアクセスできます。
コマンド行インタフェース経由で perfdump 出力を表示するには、次のコマンドを入力します。
./wadm get-perfdump --user=admin-user --password-file= admin-password-file --config=config-name --node= node-name
この出力は、コマンドウィンドウに表示されます。
次に perfdump の出力例を示します。
webservd pid: 29133 Sun Java System Web Server 7.0 B07/13/2006 17:09 (SunOS DOMESTIC) Server started Fri Jul 14 14:34:15 2006 Process 29133 started Fri Jul 14 14:34:17 2006 ConnectionQueue: ----------------------------------------- Current/Peak/Limit Queue Length 2/237/1352 Total Connections Queued 67364017 Average Queue Length (1, 5, 15 minutes) 4.52, 4.73, 4.85 Average Queueing Delay 13.63 milliseconds ListenSocket ls1: ------------------------ Address https://0.0.0.0:2014 Acceptor Threads 1 Default Virtual Server https-test KeepAliveInfo: -------------------- KeepAliveCount 198/200 KeepAliveHits 0 KeepAliveFlushes 0 KeepAliveRefusals 56844280 KeepAliveTimeouts 365589 KeepAliveTimeout 10 seconds SessionCreationInfo: ------------------------ Active Sessions 128 Keep-Alive Sessions 0 Total Sessions Created 128/128 Server cache disabled Native pools: ---------------------------- NativePool: Idle/Peak/Limit 1/1/128 Work Queue Length/Peak/Limit 0/0/0 TestPool: Idle/Peak/Limit 5/5/10 Work Queue Length/Peak/Limit 0/0/15 DNSCacheInfo: ------------------ enabled yes CacheEntries 4/1024 HitRatio 62854802/62862912 ( 99.99%) Async DNS disabled Performance Counters: ------------------------------------------------ Average Total Percent Total number of requests: 62647125 Request processing time: 0.0343 2147687.2500 default-bucket (Default bucket) Number of Requests: 62647125 (100.00%) Number of Invocations: 3374170785 (100.00%) Latency: 0.0008 47998.2500 ( 2.23%) Function Processing Time: 0.0335 2099689.0000 ( 97.77%) Total Response Time: 0.0343 2147687.2500 (100.00%) Sessions: ----------------------------------------------------------------------------------------------------------- Process Status Client Age VS Method URI Function 29133 response 192.6.7.7 115 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 8 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 4 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 10.5.8.19 4 https-test GET /perf service-dump 29133 response 192.6.7.7 3 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 3 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 response 192.6.7.7 2 https-test GET /qa_webapp/CheckNetwork.class service-j2ee 29133 request 192.6.7.7 0 29133 request 192.6.7.7 0 29133 request 192.6.7.7 0 29133 request 192.6.7.7 0 29133 request 192.6.7.7 0 29133 response 192.6.7.7 0 https-test GET /file1.shtml shtml_send 29133 request 192.6.7.7 0 29133 request 192.6.7.7 0 29133 response 192.6.7.7 0 https-test GET /find-pathinfo-forward/pathinfo.pl/p/info send-cgi 29133 request 192.6.7.7 0 29133 updating 192.6.7.7 29133 updating 192.6.7.7 29133 updating 192.6.7.7 29133 updating 192.6.7.7 . . .
パフォーマンスバケットを使用すると、バケットを定義し、それらのバケットをさまざまなサーバー関数にリンクできます。これらの関数のいずれかを呼び出すごとに、サーバーは統計データを収集し、それをバケットに追加します。たとえば、send-cgi と service-j2ee はそれぞれ、CGI と Java サーブレットの要求にサービスを提供するために使用される関数です。2 つのバケットを定義して CGI とサーブレットの要求に対して別々のカウンタを保持するか、または両方のタイプの動的コンテンツに対する要求をカウントするバケットを 1 つ作成することができます。この情報を収集するためにかかる負担は最小限で済み、サーバーパフォーマンスへの影響も通常はわずかです。この情報へはあとで perfdump ユーティリティーを使用してアクセスできます。バケット内には、次の情報が格納されます。
バケットの名前: この名前によって、バケットが関数に関連付けられます。
説明: このバケットが関連付けられている関数の説明。
この関数に対する要求の数: この関数の呼び出しを引き起こした要求の総数。
関数が呼び出された回数: 1 つの要求に対して複数回実行される関数もあるため、この回数は、関数に対する要求の数とは一致しない可能性があります。
関数の待ち時間またはディスパッチ時間: サーバーが関数を呼び出すためにかかった時間。
関数の時間: 関数自体で費やされた時間。
default-bucket は、サーバーで事前に定義されています。。ここには、ユーザーが定義したどのバケットにも関連付けられていない関数の統計情報が記録されます。
パフォーマンスバケットのすべての設定情報を、magnus.conf および obj.conf ファイルに指定してください。自動的に有効になるのは、default-bucket だけです。
最初に、パフォーマンス統計の収集と 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" |
前述の例では、次の 3 つのバケットを作成しています。acl-bucket、file-bucket、および cgi-bucket。これらのバケットを関数に関連付けるには、パフォーマンスを測定する 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>
詳細については、『Sun Java System Web Server 7.0 Administrator’s Configuration File Reference』の「The bucket Parameter」を参照してください。
バケットのサーバー統計情報には、perfdump ユーティリティーを使用してアクセスできます。パフォーマンスバケット情報は、perfdump によって返されるレポートの最後のセクションに配置されています。
レポートには次の情報が含まれています。
平均 (Average)、合計 (Total)、パーセント (Percent) の各列には、要求された各統計情報のデータが表示されます。
要求処理時間 (Request Processing Time) はサーバーがそれまでに受信したすべての要求を処理するために要した合計時間です。
要求数 (Number of Requests) は関数の要求の合計数です。
呼び出し数 (Number of Invocations) は、関数が呼び出された合計回数です。1 つの要求の処理中に、関数が何度も呼び出される場合があるため、呼び出された回数は要求の数とは異なります。この行のパーセント列は、すべてのバケットの呼び出し回数の合計に基づいて計算されます。
遅延 (Latency) は Web Server が関数の呼び出しに要した時間 (秒) です。
関数処理時間 (Function Processing Time) は Web 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: 62647125 Request processing time: 0.0343 2147687.2500 default-bucket (Default bucket) Number of Requests: 62647125 (100.00%) Number of Invocations: 3374170785 (100.00%) Latency: 0.0008 47998.2500 ( 2.23%) Function Processing Time: 0.0335 2099689.0000 ( 97.77%) Total Response Time: 0.0343 2147687.2500 (100.00%)