8

Apache Benchを使用してコードの応答時間をプロファイリングするためにいくつかの実験を行いましたが、適切な種類のデータが生成されません。ここのいい人たちがアイデアを持ってくれることを願っています。

具体的には、

  • ネットワーク経由でHTTPリクエストを実行しますか(非常に凝ったことをする必要はありません)
  • 応答時間を可能な限り正確に記録します(少なくとも数ミリ秒まで)
  • それ以上の処理を行わずに応答時間データをファイルに書き込みます(または、ライブラリの場合はコードに提供します)

ab -eデータをファイルに出力するについて知っています。問題は、これが分位数データのみを出力することです。これは便利ですが、必要なものは出力しません。このab -gオプションは、1秒未満のデータを出力しないこと、つまり必要な解像度がないことを除いて、機能します。

私はそれを行うためにPythonを数行書きましたが、httplibはひどく非効率的であり、結果は役に立たなかったのです。一般的に、純粋なPythonが提供するよりも優れた精度が必要です。Pythonから使用できるライブラリについて誰かが提案を持っているなら、私はすべての耳です。

高性能で、再現性があり、信頼性の高いものが必要です。

私の回答の半分は、「インターネットの待ち時間によって、そのような詳細な測定は無意味になる」という方針に沿ったものになることを私は知っています。私の特定のユースケースでは、これは真実ではありません。高解像度のタイミングの詳細が必要です。私のHPETハードウェアを実際に使用したものは素晴らしいでしょう。

回答とビューの数が少ないため、ここに賞金を投じます。

4

6 に答える 6

1

Javaでコーディングできる場合は、JUnitPerf+HttpUnitの組み合わせを確認できます。

欠点は、自分でもっと多くのことをしなければならないことです。しかし、これを犠牲にして、HTMLの解析、JavaScriptの実行などは言うまでもなく、GUIツールよりも無制限の柔軟性とほぼ間違いなくより正確な結果が得られます。

同様のタスクを目的としているように見えるGrinderと呼ばれる別のプロジェクトもありますが、私はそれについての経験がありません。

于 2010-11-10T16:10:00.783 に答える
1

私はこれを2つの方法で行いました。

素晴らしいがかなり高価な製品である「loadrunner」を使用します(最近のHPから)。

perl/phpとCurlパッケージの組み合わせ。CURLapiはphpから少し使いやすいことがわかりました。独自のGETおよびPUTリクエストをロールするのは非常に簡単です。また、FirefoxとLiveHttpHeadersアドオンを使用してサンプルリクエストを手動で実行し、必要なhttpリクエストの正確な形式を取得することをお勧めします。

于 2010-11-03T01:35:50.037 に答える
1

JMeterはかなり便利です。リクエストとスレッドプールを設定できるGUIがあり、コマンドラインから実行することもできます。

于 2010-11-06T17:36:42.993 に答える
1

オープンソースパフォーマンステストツールの優れたリファレンス:http ://www.opensourcetesting.org/performance.php

説明と「最も人気のある」リストがあります

于 2010-11-11T18:02:40.630 に答える
1

httperfは非常に強力です。

于 2010-11-12T18:35:06.570 に答える
0

スクリプトを使用して同じスイッチで10個のボックスを駆動し、1台のサーバーにリクエストを「再生」して負荷を生成しました。Webアプリのログ応答時間(サーバーのみ)を必要な粒度で設定しましたが、クライアントへの応答時間は気にしませんでした。クライアントへの往復の移動を計算に含めるかどうかはわかりませんが、含める場合は、コーディングするのが難しくないはずです。次に、URLごとの時間を抽出し、散布図グラフと負荷に基づく傾向グラフを作成するスクリプトを使用してログを処理しました。

これは私の要件を満たしていました:

  • さまざまなURLへの呼び出しの実際の分布。
  • 負荷に基づくトレンドパフォーマンス。
  • 同じボックスで他の集中的な操作を実行しても、Webアプリに影響を与えません。

私は、foreachサーバーがバックグラウンドでプロセスを開始してファイル内のすべてのURLをループし、それぞれでcurlを呼び出すシェルスクリプトとしてコントローラーを実行しました。当時はもっとPerlをやっていたので、Perlでログプロセッサを書きました。

于 2010-11-12T06:16:55.807 に答える