2

私は、Weblogic サーバーで実行されている Java アプリケーションの 1 つのパフォーマンス テスト ソリューションを探す任務を負っています。要件は、運用要求 (POST データを含む GET と POST の両方) を記録し、運用データベースのコピーを使用してパフォーマンス テスト環境でこれらの要求を実行することです。

テスト スクリプトの代わりにプロダクション リクエストを使用する理由は次のとおりです。

  1. これは既存のテスト スクリプトを持たない大規模なアプリケーションであるため、アプリケーション全体をカバーするスクリプトを作成するには膨大な作業が必要になります。
  2. 一部のパフォーマンスの問題は、ユーザーが特定の順序で多数のアクションを実行した場合にのみ発生します。
  3. ユーザーがシステムとどのように対話するかを推定するのではなく、実際のユーザーとシステムとの対話を使用してテストすること。私たちは、ユーザーが私たちが考えもしなかったことをすることを知っています。
  4. 本番環境にリリースする前に、パフォーマンスの問題を修正し、修正されたコードに対してリクエストを再実行できるようにしたいと考えています。

サーバー アクセス ログでJMeters Access Log Samplerを使用することを確認しましたが、アクセス ログには POST データが含まれておらず、アクセス ログ サンプラーはリクエスト URL のみを参照するため、フォーム データを送信するユーザーをシミュレートできません。

JMeter HTTP Proxy Server の使用も検討しましたが、これは 1 人のユーザーのアクションのみを記録でき、プロキシを使用するようにブラウザーを構成する必要があります。これと同じ制限が Tsung と The Grinder にも存在します。

Wireshark と TCReplay の使用を検討しましたが、パケット レベルでの記録は過剰であり、要求レベルで有用なレポートを提供しません。

本番環境にリリースする前に修正をテストできるようにする必要があることを考慮して、本番環境のパフォーマンスを分析するより良い方法はありますか?

4

4 に答える 4

0

このページのImpetusTechnologiesによるこのホワイトペーパーを確認してください。http://www.impetus.com/plabs/sandstorm.html

于 2009-11-16T14:33:12.423 に答える
0

正直なところ、あなたが求められているタスクが可能であるかどうかはわかりません。ましてや、良いアイデアではありません。アプリケーションのバックエンドがどれほど複雑で、どの程度完全に状態を再現できるか (つまり、外部 SOA サービスまたは時間/クロックに至るまで) によっては、それらの GET および POST 要求を同じように再現できない場合があります。行動。

とはいえ、本番データに対するパフォーマンス テストは常に優れていますが、通常は、そのデータにストレスを与えるアプリケーション固有の知識が必要です。HTTP GET と POST を単純に繰り返すだけでは、有用な結果が得られることはほとんどありません。

幸運を!

于 2009-11-16T18:17:53.237 に答える
0

それは難しい質問になるでしょう。Visual Studio Test Edition を使用してアプリケーションの負荷テストを行っていますが、サイトでのユーザー アクティビティを「推定」することしかできません。

ログを見て、アプリを介した特定のパスの可能性に関する情報を収集することができます。次に、本番データベースを調べて、投稿リクエストに入力された可能性のある値を確認できます。そこから、本番サイトの使用パターンにアプローチする負荷テストを作成する必要があります。

現在のツールでは、実際のユーザー インタラクションを記録および再生することはできないと思います。

Web アプリを変更して、セッションと日時に対するすべてのリクエストと投稿を記録およびログに記録することができます。このカスタム ログを使用して、テスト Web サイトに対する負荷テスト リクエストを生成できます。これは、既存のサイトに対する重大なコード変更であり、パフォーマンスに影響を与える可能性があります。

とは言うものの、私はこのレベルのログ記録を行う Web アプリを使用しており、エラーの原因となった正確な一連のページ ポスト/リクエストを分析する機能は、開発者にとって非常に価値があります。

要約すると、それは可能ですが、それを行う既成のツールは聞いたことがありません。

于 2009-11-18T21:55:45.817 に答える
0

本番リクエストを取得して正確なワークロードをシミュレートするには、次のことをお勧めします。

1) coremetrics を使用する: CoreMetrics は、アプリケーションの使用パターンを知ることができるソリューションを提供します。これは、正確なワークロード モデルを作成するのに役立ちます。次に、このモデルをテスト スクリプトに変換し、本番データベースのマスクされたコピーに対して実行できます。これにより、アプリケーションのパフォーマンスに関する正確な結果がリアルタイムで提供されます。

2) 別のオプションは、AOP (アスペクト指向アプローチ) を使用して小さなユーティリティを作成し、すべてのリクエストと対応するメソッド トレースをトレースできるようにすることです。これは、本番環境の使用パターンを特定し、ワークロードの正確なシミュレーションに役立ちます。AspectJ などの AOP フレームワークを使用できます。これには、コードの変更は必要ありません。インストルメンテーションはオンザフライで実行できます。もう 1 つの利点は、この cna が特定の時間枠でのみ有効になり、その後無効にできることです。

よろしく、バッテリーワラム

于 2009-11-30T12:52:31.843 に答える