Webフォームファイルのアップロードをストレステストするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/229031

質問

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

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

経験に基づいた回答は素晴らしいと思いますが、どんな提案も歓迎します。

役に立ちましたか?

解決

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

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)

他のヒント

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

100個の連続した名前のファイルを生成して簡単にループすることも、同じファイルを繰り返し使用することもできます

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

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

残念ながら、この答えは少し曖昧なままですが、うまくいけば正しい軌道に乗ることができます。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top