4

私は最近、Web アプリケーションを公開する前に、そのパフォーマンスをテストする方法を考えていました。このテストは新しい機能であるため、実際のユーザー アクティビティを再現できないことはわかっています。ログを見てユーザー アクティビティを推測し、それに応じてテストを作成することはできますが、これが何を達成するのだろうかと思います。

私はどのようにできるか知りたいです:

  1. 負荷を決定し、
  2. 行動を決定する

現実世界のシナリオと比較して、これはどの程度まであなたを導きますか?

4

2 に答える 2

5

広大な質問。私の会社では、主に HTTP ベースで、数年間ベンチマークと負荷テストを実行してきました。

複雑なシナリオに入る前に、 Apache Bench (Apache にバンドルされている「ab」コマンド) に基づく簡単なベンチマークから始めることがよくあります。これは負荷テストではなく、パフォーマンス テストです。生成されたクライアントは実際には HTTP クエリの完了を待ってから次に進むためです。基本的な考え方は、(たとえば) N=1,2,4,8,50,100 で 'ab -c N -t 30' を試すことです。予想されるスケーラビリティと最大スループットがすぐにわかります。

: テスト サーバーの近くで (理想的には同じ LAN 上で) 'ab' コマンドを実行します。そうしないと、ネットワークのベンチにもなります (ここでの主な問題は遅延です)。しかし、一部のビジネス ケースでは、これは実際にテストすることを意図したシステム全体 (サーバー + ネットワーク) です。

ここから、結果が良さそうに見える場合 (つまり、スループットがサーバー側のプロセッサの数まで拡大し、エラー率が低いかゼロである場合)、負荷テストに進みます。それ以外の場合、負荷テストはスケーラビリティの問題のみを確認し、負荷がサポートされているスループットを超えると恐ろしい結果を示す可能性が高いため、ボトルネックを検索します (500 の内部エラーの 100%、接続のドロップ、大きなタイムアウト、サーバーのスラッシングなど)

ところで、負荷テストとは、特定のサーバー/アプリに任意の負荷、特にサーバーが処理できない負荷 (例: Jmeter、Tsung) を適用できるツールを使用することを意味します。負荷テストで非常に興味深いのは、サーバーが過負荷になったときに何が起こっているかを観察することです。サーバーが処理できる最大負荷を決定するのは、パフォーマンスが許容できないと見なされる正確なテスト ポイントを選択するときです。

次に、既存のパターンを推測または観察することです。多くの場合、新しい Web サイトの負荷テストを実行するように求められますが、明らかに実際の動作は観察されていません。それ以外の場合は、分析を使用して上位 10 ページを観察できます。シナリオでは、少なくともそれらを横断する必要があります。次のようないくつかのナビゲーション パスが必要になります。

  • 明らかにホームページに到達する
  • 検索機能を使用して、あるコンテンツから別のコンテンツに、おそらくランダムにバウンスします
  • 機能が存在する場合はログインに進みます
  • より一般的には、データの読み取り/取得のみを行う POST フォーム、負荷テストはあまり意味がありません。

その他のヒント:

  • 複雑さを避ける。たとえば、ショッピング カートがある場合、支払いなどを使用して実際のショッピング シナリオを設定する必要はありません。e コマース ショップでは、ショッピング カート パスがパフォーマンスの問題になることはめったになく、トラフィックの 95% は他の場所 (商品の閲覧など) にあります。
  • ナビゲーション パスを 1 つずつテストしてから、1 つの大きな負荷テスト フィエスタに積み上げます。彼らは事前に個別に良い結果を提供する必要があります
  • 実際にキャッシュを実行するには、多くのパスを要求することをお勧めします (常にキャッシュがあります: HTTP、アプリ、SQL、ファイルシステムなど)。長いリストからログイン名またはオブジェクト ID を変更できる動的なシナリオを生成するツールは必須です

全体的な考え方は、単純なテストから始めて段階的に行うことです。そうしないと、完全なスケーラビリティ曲線に適合していない場合、結果を解釈するのに苦労します。そして、何を推測しますか?完全なスケーラビリティ曲線に適合することはありません...

于 2011-11-09T16:27:41.970 に答える
0
  1. 業態で決まります。SLAについて通常は「100%負荷」と表示されます。システムの最大パフォーマンスや、システムの稼働中の負荷のピークを知りたい場合は、200% 以上のテストを行うことも、システムの安定性を知りたい場合は、非常に長い 100% テストを行うこともできます。
  2. すべての操作の 20% に 80% の時間がかかるというルールが存在します。ユーザー統計を使用して、必要なアクションを決定します。それ以外のシナリオは、再びビジネスによって決定されます。ユーザー アクティビティ (一連の操作) は時間 (昼夜、週、月末など) で変わる可能性があるため、ユーザー アクティビティのさまざまなプロファイルを作成する必要があります。
于 2011-11-09T16:53:30.100 に答える