主要業績評価指標分析-パート1

テストとパフォーマンス分析は、さらに議論したいトピックです。 悪名高いPatterns&Practicesチームから、主要業績評価指標の必要性に関するガイドの翻訳を公開し始めています。 翻訳について-テストに関する資料の著者であるカスペルスキーのIgor Shcheglovitovに感謝します。 テストのトピックに関する残りの記事は、 mstestingタグにあります。


はじめに



パフォーマンス分析は複雑な分野です。 彼女はシステムを調べてパフォーマンス要件を満たし、これらの要件が達成されなかった場合の理由を判断します。 このシリーズのパフォーマンス分析入門では、優れたパフォーマンスを実現するためにクラウド開発で使用されるツールとアプローチを説明するこのトピックの概要を説明します。



このガイドの目的は、システムのパフォーマンスを調査する方法を学ぶことです。 特に、このガイドでは、注意が必要な主要なパフォーマンスメトリックと、これらのメトリックを使用してシステムのパフォーマンスを判断する方法について説明します。



:大規模アプリケーションでのパフォーマンスの問題の多くは、比較的低い負荷では再現せず、高(ストレス)負荷では大幅なスローダウンまたはシステムクラッシュにつながるという事実によるものです。 スケーラブルなシステムを開発する重要な側面は、これらの状況を防ぐことです。 このタスクを支援するために、クラウドシステムのパフォーマンスの一連のアンチパターン( クラウドベースのアンチパターン )を含む記事を公開しました。



主要業績評価指標の概念



システムのパフォーマンスは、次の要因によって決まります。



これらの要因は明らかかもしれませんが、もちろん、システムの負荷レベルによって異なります。 十分なリソースと低負荷で、ほとんどのシステムは操作を迅速に実行します。 負荷が特定の制限レベルまで増加すると、重大な瞬間が発生します。 システムは、数百万の同時リクエストまたは利用可能なリソースを大量に消費するリクエストをどのように処理しますか? グラフは、ユーザーリクエストを受信して​​処理するテストクラウドサービスの一般的なプロファイルを示しています。 このグラフは、ユーザー負荷の増加に伴って帯域幅と平均応答時間がどのように変化するかを示しています。 このグラフは、制御された負荷テストのプロセスで取得されました。 横軸は時間です。 このテストでは、各リクエストにほぼ同じ時間と量のリソースが必要であると想定しています。 リクエスト間の時間間隔は正規分布に従い、仮想ユーザーの現実的な動作をシミュレートします。



:現実的なユーザーの行動は、ストレステストの重要な機能です。 このアプローチを適用しないと、結果が不正確になる可能性があります。 詳細については、負荷テストシナリオでのWebサイトのヒューマンインタラクション遅延をシミュレートするための思考時間の編集を参照してください。









シンプルなクラウドサービスのユーザー固有のパフォーマンスプロファイル



最初は、スループットは低くなりますが、負荷が増加すると、サービス自体の機能(容量)に依存する特定の制限まで増加します。 この容量は、ほとんどの場合、開発段階で設定されるか、サービスで使用されるリソースによって決定されます。 次のものに制限される場合があります。



:パフォーマンステストに使用するツールが誤った結果を生成しないようにしてください。 たとえば、必要な負荷をシミュレートするのに十分な数のテストエージェントをツールが提供できない場合、スループットが正しく決定されない可能性があります。

ただし、このグラフは必ずしも全体像を示すとは限りません。 最大帯域幅が表示されるという事実にもかかわらず、レイテンシー(遅延)はパフォーマンスがさらに向上するにつれて増加します。 これは、ますます多くのリクエストが待機キューに入ることを意味します。 ある時点で、これらのリクエストはタイムアウトになり始め、対応する結果がクライアントに返されます。 さらに、サービスがWebサーバー(IISなど)を使用している場合、Webサーバー自体の外部接続の制限を超えると、後者は新しい接続を拒否し始めます。



別の注意 :システムが依存するサービス容量の不足は、「バックエンドのプレッシャー」と呼ばれます。 多くのシステムでは、そのようなサービスはしばしばパフォーマンスを制限する要因です。 これらのサービスは多くの場合外部であり、その管理はパフォーマンスに影響を与える可能性のある他の人に移すことができます(または既に管理されています)。

図は、高負荷下での同じテストクラウドサービスの負荷プロファイルを示しています。











このグラフは、負荷が600ユーザーに達するとすぐに、リクエストがタイムアウトになり始め、システムが例外をスローし始めることを示しています。 負荷が増加すると、エラー生成が増加します。 成功したリクエストの頻度も低下することに注意してください。 平均リクエスト時間も低下することに注意してください、なぜなら サービスはすぐにリクエストを拒否し始めます。 重要なポイント-応答時間を測定することは、システムがどれだけうまく機能するかの指標ではありません。

もう1つの困難は、システムが(少なくとも一時的に)回復するのに十分安定していること、およびキューで待機している要求の数が消え、後続の要求が正常に処理されることを考慮することです。 システムは、正常に実行されたリクエストの頻度の変動が失敗率で周期的に置き換えられる期間に入る場合があります。 図は、この現象を示すグラフを示しています。これは、アンチパターンの不適切なインスタンス化を反映しています。









増加する負荷の下での成功および失敗したサービスコールの頻度の変動



この例では、システムは定期的に復元され、その後再びクラッシュします。 例外の頻度は、後続のピークごとに増加し続けることに注意してください。これは、ある時点でシステムが完全に故障することを示しています。



これらのグラフの主な目標は、ストレス下にあるシステムの「幸福」を判断するのに役立つ要因間の関係を強調することです。それは、健全であるか、崩壊しようとしている、またはその間の何かです。 テスト環境での負荷テストは、サービスの許容可能な容量を決定し、パフォーマンス要件を満たすためにスケーリングする必要があるかどうかを評価するのに役立ちます。



上記のグラフでは、テストされたサービスが分離されている単純な(理想的な)状況について話していました。 しかし、現実の世界では、外部ノイズの問題があります。「ユーザーは予測できない動作をし、同時に多くの異なる操作を実行します。この場合、任意の時点でのシステムパフォーマンスは、その時点で実行される点操作のセットによって決まります。



ユーザーがエラーを受信し始めるか、システムの速度が低下する場合、これはロジックの特定のセクションではなく、システムの合計負荷が原因である可能性があります。 これらはすべて、継続的なパフォーマンス監視の重要性を強調しています。 正確で最新のパフォーマンス情報がある場合は、要求を処理するために追加のリソースを必要とする突然のユーザーアクティビティにすばやく対応できます。 収集するパフォーマンスデータには、さまざまなメトリックをシステムプロセスのライフサイクルの完全なビューに取り込むことができるように、十分なコンテキスト情報が含まれている必要があります。 この情報は、パフォーマンス分析中に不可欠です。 システムを構成するさまざまな並列プロセスがどのように共存、相互作用、および競合するかを理解するのに役立ちます。 この情報を収集するプロセスは、 パフォーマンス分析入門で詳細に説明されています。



抽象化レベルによる指標の分析:



ほとんどのシステムには、収集および分析できる多くのメトリックがあります。 慎重に検討しないと、収集されたデータの量が非常に簡単に失われたり、重要な値が失われたりして、主要なメトリックの収集を忘れることがあります。 以下の分類は、特定の抽象化レベルごとにメトリックを整理するのに役立ちます。 正しく配布することにより、適切なレベルのパフォーマンスを決定するデータのみに集中できます。 この一連の記事では、次のレベルの抽象化について説明します。







ご清聴ありがとうございました。 次のパートでは、これらのメトリックをより詳細に検討し、次のトピックに進みます。



記事の一部:

主要業績評価指標分析-パート1

主要業績評価指標分析-パート2、カスタム、ビジネス、およびアプリケーションメトリックの分析について

主要業績評価指標分析-パート3、システムとサービスに関する最後のメトリック。



All Articles