パフォーマンスチューニングに影響する重要な概念には、次のものがあります。
ユーザー負荷
アプリケーションのスケーラビリティー
安全性のマージン
次の表で、これらの概念と実際の測定方法を説明します。左端の列では一般的な概念を示し、2 番目の列にはその概念を実行した場合の結果を示します。3 番目の列では測定値、右端の列では値のソースを説明します。
表 1–2 パフォーマンスに影響する要因
概念 |
実行した場合の結果 |
測定値 |
値のソース |
---|---|---|---|
ピーク負荷時の同時セッション数 |
毎分トランザクション数 (TPM) 毎秒 Web インタラクション数 (WIPS) |
(最大同時ユーザー数) * (予測応答時間) / (クリック間隔) 例: (100 ユーザー * 2 秒) / 10 秒 = 20 |
|
1 個の CPU 上で測定されるトランザクション率 |
TPM または WIPS |
負荷ベンチマークから測定されます。各層で実行します。 |
|
垂直方向のスケーラビリティー |
CPU の追加によるパフォーマンス上昇 |
追加 CPU あたりの上昇率 |
ベンチマークからの曲線の当てはめに基づくCPU 数を段階的に増やしながらテストを実行します。曲線の「転換点」を識別します。これは、CPU の追加によるパフォーマンス上昇効果がコストに見合わなくなるポイントです。このガイドの説明に従ったチューニングが必要です。各層で実行し、必要であれば反復します。この測定値がパフォーマンス要件を満たしていればここで中止します。 |
水平方向のスケーラビリティー |
サーバー の追加によるパフォーマンス上昇 |
サーバープロセスやハードウェアノードの追加あたりの上昇率 |
前のステップと同様に、十分に調整された単一のアプリケーションサーバーインスタンスを使用します。サーバーインスタンスおよびハードウェアノードを 1 つ追加するたびにパフォーマンスがどれだけ改善されるかを測定します。 |
高可用性要件 |
システムが障害に対処する必要がある場合、1 つ以上のアプリケーションサーバーインスタンスの機能停止を想定したパフォーマンス要件を満たすようにシステムのサイズを決定する |
高可用性が必要な場合は、使用する等式が異なります。 |
|
想定を超えたピーク時の超過容量 |
ある程度の安全マージンを確保するために、ベンチマークで測定されたピークよりも低い負荷でサーバーを運用することが望ましい |
ピーク負荷の 80% のシステム容量利用は、ほとんどのインストールで適切です。現実のピーク負荷およびシミュレートされたピーク負荷の各条件下で配備を測定します。 |
これまでの説明では、配備アーキテクチャーの定義に向けた指針を示しました。ただし、配備の実際のサイズは、「容量計画」と呼ばれるプロセスによって決定します。容量計画では、次のことを予測します。
特定のハードウェア構成のパフォーマンス容量
指定されたアプリケーション負荷およびパフォーマンスを持続するために必要なハードウェアリソース
これらの値を予測するには、現実的なデータセットおよび作業負荷を用意したアプリケーションを使用して、入念なパフォーマンスベンチマーク測定を行います。
1 個の CPU 上でのパフォーマンスを特定する。
まず、1 個のプロセッサで持続できる最大の負荷を特定します。この数値は、シングルプロセッサマシン上でアプリケーションのパフォーマンスを測定することによって入手できます。類似の処理特性を持つ既存のアプリケーションのパフォーマンス数値を利用するか、より理想的な方法として、テスト環境で実際のアプリケーションおよび作業負荷を使用します。この測定で使用するアプリケーション層およびデータソース層の構成は、最終的な配備と完全に一致するようにしてください。
垂直方向のスケーラビリティーを特定する。
プロセッサを追加したときにパフォーマンスがどの程度上昇するかを特定します。これは、特定の作業負荷がかかったときにサーバー上で発生する共有リソース競合の量を間接的に測定することになります。この情報は、マルチプロセッサシステム上でのアプリケーションの追加負荷テストに基づいて入手するか、あるいは、すでに負荷テストが完了している類似のアプリケーションから入手した既存の情報を利用します。
一般的には、1〜8 個の CPU 構成で一連のパフォーマンステストを段階的に実行することにより、システムの垂直方向スケーラビリティー特性の感覚が得られます。結果を歪曲することがないように、必ず、アプリケーション、Application Server、バックエンドのデータベースリソース、およびオペレーティングシステムを適切に調整してください。
水平方向のスケーラビリティーを特定する。
十分に強力なハードウェアリソースを利用できる場合、単一のハードウェアノードでパフォーマンス要件を満たせる場合があります。それでも、2 台以上のシステムをクラスタ化することで、さらなる可用性の向上を実現できます。外部のロードバランサおよび作業負荷シミュレーションを利用して、ステップ (2) で特定したように、十分に調整された 1 つのアプリケーションサーバーノードをレプリケートすることによって得られるパフォーマンス向上を特定します。
アプリケーションのエンドユーザーは一般に、パフォーマンスに関して何らかの期待を抱いています。多くの場合、そのような期待は数値的に定量化できます。顧客のニーズが満たされることを保証するために、これらの期待を明確に理解し、容量計画に反映する必要があります。
パフォーマンスに関する期待について、次の事項を検討します。
アプリケーションとの各種の対話処理で、ユーザーが期待する平均応答時間はどの程度か。もっとも頻繁に行われる対話処理は何か。時間的要求がきわめて厳しい対話処理が存在するか。1 回の対話処理の長さは思考時間を含めてどの程度か。多くのケースで、精度の高い予測を得るためには、観察に基づいたユーザー調査の実施が必要です。
通常状態時およびピーク時のユーザー負荷はどの程度と予測されるか。一日、一週間、または一年のうち、負荷のピークが観測または予測される特定の時間帯または時期が存在するか、オンラインビジネスでは数百万の登録ユーザーが存在する場合もありますが、ある特定の時点で実際にログインしてビジネストランザクションを実行しているのはそのうちのごく一部です。容量計画の間の一般的な誤りの 1 つは、同時ユーザー数の平均値およびピーク値ではなく、顧客基盤の全体サイズを基準として使用することです。時間の経過とともに、同時ユーザー数に何らかのパターンが現れる場合もあります。
1 回の要求で転送される平均およびピークのデータ容量はどの程度か。この値はアプリケーション固有でもあります。コンテンツサイズの適切な予測とその他の使用状況パターンを組み合わせることで、ネットワーク容量のニーズを予測しやすくなります。
今後 1 年間で予測されるユーザー負荷の増加はどの程度か。将来を十分に見据えた計画を立てることにより、危機的な状況や、アップグレードのためのシステム停止期間を避けやすくなります。