キャパシティ プランニングとパフォーマンス チューニング

     前  次    目次     
ここから内容

キャパシティ プランニングのプロセス

キャパシティ プランニングのプロセスには、複数のアクティビティが含まれます。以下の節で、これらのアクティビティについて説明します。

注意 : このガイドで説明されているテストは、制御された環境で実施されたものです。ここで示されている数値は、ユーザがそれぞれの環境でテストを実行して得られる結果と一致しない場合があります。これらの数値は、キャパシティ プランニングのプロセスについて説明するためのものです。

 


WLI アプリケーションの設計

以下に、設計者および開発者が、WLI アプリケーションを設計する際に留意する必要がある、パフォーマンスに関連する設計上の問題をいくつか示します。

注意 : パフォーマンスに影響する可能性がある、設計上の考慮事項の詳細については、WebLogic Integration のベスト プラクティスおよび「WLI のチューニング」を参照してください。

 


環境のチューニング

WLI アプリケーションのパフォーマンスは、アプリケーションの設計だけでなく、アプリケーションが動作する環境によっても異なります。

環境には、WLI サーバ、データベース、オペレーティング システムとネットワーク、および JVM があります。システムから十分なパフォーマンスを引き出すには、これらすべてのコンポーネントが適切にチューニングされている必要があります。

 


パフォーマンス テストのためのアプリケーションの準備

ロード ジェネレータ スクリプトを使用して、パフォーマンス テストの実行、およびアプリケーションの起動を行うためには、アプリケーションにいくつかの細かい変更を加える必要がある場合があります。

変更の程度は、アプリケーションの特性、ロード ジェネレータの能力、およびキャパシティ プランニング プロセスから予期される結果によって異なります。

必要となる可能性がある変更の例を以下に示します。

 


作業負荷の設計

パフォーマンス テストの結果の質は、使用される作業負荷に依存します。

作業負荷は、システムが実行すると考えられる処理の量です。これは、システムに接続している、およびシステムと対話している一定数のユーザを持つシステムで実行されている特定のアプリケーションで構成されます。

作業負荷は、可能な限りプロダクション環境に近くなるように設計する必要があります。

作業負荷を設計する際は、以下のパラメータを考慮する必要があります。

次の手順では、作業の単位および SLA を定義します。

 


作業の単位および SLA の定義

サービス レベル アグリーメント (SLA) は、サービスの提供者とサービスの消費者との間の契約であり、サービスの許容 (および非許容) レベルを定義します。一般的に、SLA は、応答時間またはスループット (1 秒あたりのトランザクション数) で定義されます。

キャパシティ プランニングを行うためには、作業の単位 (つまり、各トランザクションに含まれる一連のアクティビティ) を定義してから、それを使用して SLA を定義することが重要です。

次の図に示されている、注文アプリケーションについて検討します。

図 2-2 作業の単位 : 注文アプリケーション

作業の単位 : 注文アプリケーション

各ノードは JPD です。注文を処理するには、これらすべての JPD が必要です。このシナリオでは、作業の単位 (トランザクション) を、次のいずれかとして定義できます。

各 JPD ではなく、ビジネス オペレーションのフロー全体を作業の単位と見なすことをお勧めします。

次の手順では、負荷生成スクリプトを設計します。

 


負荷生成スクリプトの設計

負荷生成スクリプトは、テストの実行時に、サーバで意図した作業負荷を発生させるために必要です。

注意 : テストの実行の詳細については、「ベンチマーク テストの実行」および「スケーラビリティ テストの実行」を参照してください。

負荷生成スクリプトを作成する際は、以下の点に留意する必要があります。

要求を送信する速度が制御されていない場合、フローの均衡が維持される比率を超えてもなおシステムに要求が到着し続け、キューのオーバーフローなどの問題が発生する可能性があります。

以下の図は、前の要求がサーバによって処理された場合にのみ、単一のユーザが次の要求を送信する様子を表しています。

図 2-3 均衡の取れた負荷生成スクリプト

均衡の取れた負荷生成スクリプト

この手法により、同時ユーザの数を増やすことで、システムに悪影響を与えずに、システムの到着率 (負荷) を上げることができるため、システムのキャパシティを正確に測定することができます。

以下の図は、単一のユーザが、サーバによる前の要求の処理が完了するのを待たずに新しい要求を送信する様子を表しています。

図 2-4 到着率がスループットを上回る非ブロッキング スクリプト

到着率がスループットを上回る非ブロッキング スクリプト

このやり方は、キューのオーバーフローなどの問題の原因となり、キャパシティの誤認を招く可能性があります。

均衡の取れた負荷生成スクリプトの使用をお勧めします。

 


テスト環境のコンフィグレーション

この節の説明に従ってテスト環境をコンフィグレーションし、テストの結果を、信頼性の高い、外的要因に影響されないものにする必要があります。

 


ベンチマーク テストの実行

ベンチマーク テストは、システムのボトルネックの特定およびシステムの適切なチューニングに役立ちます。

テストでは、スループットがそれ以上増加しなくなるまで、システムへの負荷を徐々に増加させます。

注意 : ベンチマーク テストの目的上、テストにおける負荷は、システム リソースを要求する、WLI アプリケーションの任意の側面 (同時ユーザの数、ドキュメント サイズなど) となります。
注意 : システムが適切なウォームアップ時間を取れるように、負荷は徐々に増加させていく必要があります。
注意 : ベンチマーク テストは、単一の WLI マシンを使用して、思考時間なしで実行します。

スループットの増加が停止した場合、以下のいずれかが発生した可能性があります。

以下の図は、Mercury LoadRunner の負荷の増加スケジュールを表しています。最初の 10 分間は、10 の同時ユーザによるウォームアップ テストのための時間です。その後、15 分ごとに 10 のユーザを追加する割合で、負荷を増加させます。

図 2-5 テストの負荷の増加スケジュール

テストの負荷の増加スケジュール

テストの実行時に、以下のデータを記録する必要があります。

以下の図は、ベンチマーク テストの結果を示しています。

図 2-6 ベンチマーク テストの結果

ベンチマーク テストの結果

ユーザの追加に従い、平均 TPS が増加しています。ハードウェア リソースのいずれか (この場合は CPU) の使用率が 100% に達した時点で、平均 TPS がピークに達しています。この時点での応答時間が、最適な結果です。システムにユーザをさらに追加すると、TPS が減少し始めます。

この結果のパターンは、システムでリソースが最大限に使用されていることを示しています。

キャパシティ プランニング プロセスの次のアクティビティは、ベンチマーク テストの結果の検証です。

リトルの法則を使用した結果の検証

テスト結果を分析する前に、リトルの法則を使用してそれらを検証し、テストのセットアップでのボトルネックを特定する必要があります。テスト結果は、リトルの法則を適用した場合に得られる結果から大きく外れるものであってはなりません。

マルチユーザ システムの応答時間の式は、リトルの法則を使用して証明することができます。応答時間が r の任意のシステムに接続している、平均思考時間が z である n 人のユーザについて検討します。各ユーザは、思考と応答の待機を繰り返すため、メタシステム (ユーザとコンピュータ システムで構成される) でのジョブの合計数は n に固定されます。

n = x (z + r)

r = n/x - z

n は平均負荷、z + r は平均応答時間、および x はスループットです。

結果の解釈

結果を解釈する際は、システムの定常値のみを考慮するように注意してください。負荷を増加および減少させるための時間をパフォーマンス メトリクスに含めないでください。

スループットが飽和状態に達したときに、リソース (CPU、メモリ、ハード ディスク、またはネットワーク) の使用率がピークに達していなければなりません。リソースのいずれも使用率がピークに達していない場合は、システムにボトルネックがないかどうか分析し、適切にチューニングします。

ボトルネック分析とチューニングのヒント

スループットが飽和状態に達した時点で、リソースのボトルネックが存在していない場合は、ボトルネックがアプリケーションおよびシステム パラメータに存在している可能性があります。これらのボトルネックは、以下のいずれかが原因となっている可能性があります。

 


スケーラビリティ テストの実行

増加した負荷を、パフォーマンスを低下させることなく処理できる場合、そのアプリケーションはスケーラブルであると見なすことができます。増加した負荷を処理するために、ハードウェア リソースを追加する必要がある場合があります。

アプリケーションは、マシンを追加することで水平に拡張できます。また、同じマシンにリソース (CPU など) を追加することで垂直に拡張することもできます。

水平拡張と垂直拡張

以下の表では、水平拡張と垂直拡張の相対的な利点を比較しています。

表 2-1 水平拡張と垂直拡張の相対的な利点
垂直拡張
(単一のマシンにリソースを追加)
水平拡張
(マシンを追加)
  • 管理が容易です。
  • 管理性が向上します。
  • システム リソース間のより効率的な相互接続を提供します。
  • 優れた負荷分散および高可用性を提供します。

アプリケーションを拡張する必要がある場合、要件に応じて、水平拡張、垂直拡張、またはこれらの組み合わせを選択できます。

以下の図は、単一のクラスタ化されていない 4 CPU マシン (垂直拡張) と、2 台のクラスタ化された 2 CPU マシン (水平拡張) で実行されている WLI の比較を示しています。

図 2-7 水平拡張と垂直拡張

水平拡張と垂直拡張

水平拡張シナリオ (2 台の 2 CPU マシン) のパフォーマンスは、垂直拡張シナリオ (単一の 4 CPU マシン) のパフォーマンスよりもわずかに低くなっています。これは、水平拡張シナリオでは、追加の負荷分散およびクラスタリングのオーバーヘッドが発生するためです。

スケーラビリティ テストの実施

スケーラビリティ テストにより、システムに (水平または垂直に) リソースを追加した場合に、アプリケーションがどのように拡張されるかが分かります。この情報は、任意のシナリオに必要な追加のハードウェア リソースを見積る場合に役立ちます。

スケーラビリティ テストでは、SLA が達成されるか、またはターゲット リソースの使用率が上限に達するかの、いずれか早い方が発生するまで、負荷を徐々に増加させます。

注意 : 対照的に、ベンチマーク テストでは、スループットの増加が停止するまで、負荷を増加させます。

スケーラビリティ テストを実行するためには、可能な限り厳密にプロダクション シナリオをエミュレートするように、作業負荷を設計する必要があります。ユーザによる対話が不要な場合、およびプロセスの呼び出しをプログラムによって行う場合は、ベンチマーク テストの手法と同様に、思考時間をゼロとする手法を使用することをお勧めします。

SLA が達成される前に、ターゲット リソースの使用率レベルが上限に達した場合は、システムにリソースを追加する必要があります。追加されるリソース (垂直拡張) またはマシン (水平拡張) の数は、1、2、4、8... といった順序である必要があります。

注意 : キャパシティを見積るための方程式を導き出すには、少なくとも 3 つのデータ点を使用する必要があります。

ベンチマーク テストの実行時に記録したすべてのデータを、スケーラビリティ テストの実行時に捕捉する必要があります。詳細については、「ベンチマーク テストの実行」を参照してください。

注意 : リソースの使用率が目標レベルに最も近付いた時点で記録されたデータのみを使用して、追加のリソース要件を見積る必要があります。

テストの実行後に、ベンチマーク テストで説明した手順に沿って結果を検証および分析し、必要に応じて、次の節の説明に従って、追加のリソース要件を見積ります。

 


リソース要件の見積り

要求される SLA が達成されない場合は、テスト結果をつなぐ曲線を描きます。曲線の方程式を導き出し、それを使用して、必要な追加のハードウェア リソースを見積ります。線形回帰および曲線の当てはめどの手法を使用して、必要なリソースを予測できます。これらの手法は、Microsoft Excel などのスプレッドシート アプリケーションを使用して実施できます。

以下の図は、水平スケーラビリティ テストの結果を示しています。

図 2-8 キャパシティの見積り : 水平拡張

キャパシティの見積り : 水平拡張

グラフは、ノード数がさまざまなクラスタにおける、70% の CPU 使用率での 1 秒あたりの平均トランザクション数 (TPS) を示しています。

このスケーラビリティ テストの結果の場合、線型方程式が最も当てはまります。最良適合曲線では、R2 は、値 1 に近付きます。

方程式は、y = 12.636x + 4.065 です。y は平均 TPS であり、x はノード数です。

注意 : 水平または垂直にリソースを追加することで TPS を高めることができますが、目的が特定の応答時間を達成することである場合、この方法は役に立たない場合があります。このような場合は、より高速な CPU の使用を検討します。

スケーラビリティ テストの結果、および要求される結果を達成するために必要なチューニングを踏まえて、アプリケーションをコンフィグレーションし、プロダクション環境にデプロイする必要があります。

注意 : プロダクション環境用に購入を決定したリソースが、スケーラビリティ テストで使用したものと同じ種類またはモデルでない場合は、以下の式を使用して、リソース要件を見積ることができます。
注意 : E x T1 / T2
注意 : E = スケーラビリティ テストによって得た見積り
注意 : T1 = テストが実行されたマシンの SPECint レート
注意 : T2 = 購入するマシンの SPECint レート
注意 : この式は、拡張が CPU の数に基づいている場合にのみ適用できます。
注意 : SPECint レートの詳細については、http://www.spec.org を参照してください。

  ページの先頭       前  次