4

ファイルのアップロードを行う Web フォームをテストする必要があります。アップロードごとのファイルサイズは約 10 MB です。サーバーが 100 を超える同時アップロードを処理できるかどうかをテストし、サイトの残りの部分に対して応答性を維持したいと考えています。

弊社オフィスからの繰り返しのフォーム送信は、ローカル DSL 回線によって制限されます。サーバーは帯域幅の広いオフサイトにあります。

経験に基づいた回答は素晴らしいものですが、提案は大歓迎です。

4

3 に答える 3

9

Apache にバンドルされているab (ApacheBench)コマンドライン ツールを使用します (この素晴らしい小さなツールを発見しました)。cURL や wget とは異なり、ApacheBench は Web サーバー (あらゆる種類の Web サーバー) でストレス テストを実行するために設計されました。それはあまりにも多くの統計を生成します。test.jpg次のコマンドは、ファイルを含む HTTP POST リクエストをhttp://localhost/ 100 回送信し、最大 4 つの同時リクエストを送信します。

ab -n 100 -c 4 -p test.jpg http://localhost/

次のような出力が生成されます。

Server Software:        
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      4
Time taken for tests:   0.78125 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Non-2xx responses:      100
Total transferred:      2600 bytes
HTML transferred:       0 bytes
Requests per second:    1280.00 [#/sec] (mean)
Time per request:       3.125 [ms] (mean)
Time per request:       0.781 [ms] (mean, across all concurrent requests)
Transfer rate:          25.60 [Kbytes/sec] received

Connection Times (ms)
          min  mean[+/-sd] median   max
Connect:        0    0   2.6      0      15
Processing:     0    2   5.5      0      15
Waiting:        0    1   4.8      0      15
Total:          0    2   6.0      0      15

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%     15
  95%     15
  98%     15
  99%     15
 100%     15 (longest request)
于 2008-11-27T14:59:38.473 に答える
0

おそらく、cURL を使用して、POST 要求を介してランダムなもの (10MB を読み取り、/dev/urandombase32 にエンコードするなど) を送信し、本文をファイルのアップロードとして手動で作成するようにガイドします (ロケット科学ではありません)。

おそらく数台のサーバーで、そのスクリプトを 100 回フォークします。システム管理者があなたが DDoS などを行っていると思わないようにしてください :)

残念ながら、この答えは少しあいまいなままですが、うまくいけば、あなたを正しい軌道に乗せることができます.

Liam のコメントの続き:
アップロードを受信するサーバーがそれに接続しているクライアントと同じ LAN にない場合は、可能な限り本物の動作をシミュレートするためだけに、ストレス テストのためにできるだけリモート ノードを取得することをお勧めします。ただし、ローカル LAN の外部にあるコンピューターにアクセスできない場合は、ローカル LAN は常に何もないよりはましです。

サーバーに二重の負荷をかけることになるため、同じハードウェア内からストレス テストを行うことはお勧めできません。そうして初めて、サーバーはその魔法を実行できます。送信部分が外部委託されている場合、受信側で 2 倍の (任意のサイズの塩の粒で取得) パフォーマンスが得られます。

于 2008-10-23T09:09:15.030 に答える
0

お気に入りの言語を使用してSelenium RCを自動化します。Selenium の 100 スレッドを開始し、それぞれが入力にファイルのパスを入力して [送信] をクリックします。

順番に名前が付けられた 100 個のファイルを生成して、簡単にループできるようにするか、同じファイルを何度も使用することができます。

于 2008-10-23T09:12:00.267 に答える