ファイルのアップロードを行う Web フォームをテストする必要があります。アップロードごとのファイルサイズは約 10 MB です。サーバーが 100 を超える同時アップロードを処理できるかどうかをテストし、サイトの残りの部分に対して応答性を維持したいと考えています。
弊社オフィスからの繰り返しのフォーム送信は、ローカル DSL 回線によって制限されます。サーバーは帯域幅の広いオフサイトにあります。
経験に基づいた回答は素晴らしいものですが、提案は大歓迎です。
ファイルのアップロードを行う Web フォームをテストする必要があります。アップロードごとのファイルサイズは約 10 MB です。サーバーが 100 を超える同時アップロードを処理できるかどうかをテストし、サイトの残りの部分に対して応答性を維持したいと考えています。
弊社オフィスからの繰り返しのフォーム送信は、ローカル DSL 回線によって制限されます。サーバーは帯域幅の広いオフサイトにあります。
経験に基づいた回答は素晴らしいものですが、提案は大歓迎です。
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)
おそらく、cURL を使用して、POST 要求を介してランダムなもの (10MB を読み取り、/dev/urandom
base32 にエンコードするなど) を送信し、本文をファイルのアップロードとして手動で作成するようにガイドします (ロケット科学ではありません)。
おそらく数台のサーバーで、そのスクリプトを 100 回フォークします。システム管理者があなたが DDoS などを行っていると思わないようにしてください :)
残念ながら、この答えは少しあいまいなままですが、うまくいけば、あなたを正しい軌道に乗せることができます.
Liam のコメントの続き:
アップロードを受信するサーバーがそれに接続しているクライアントと同じ LAN にない場合は、可能な限り本物の動作をシミュレートするためだけに、ストレス テストのためにできるだけリモート ノードを取得することをお勧めします。ただし、ローカル LAN の外部にあるコンピューターにアクセスできない場合は、ローカル LAN は常に何もないよりはましです。
サーバーに二重の負荷をかけることになるため、同じハードウェア内からストレス テストを行うことはお勧めできません。そうして初めて、サーバーはその魔法を実行できます。送信部分が外部委託されている場合、受信側で 2 倍の (任意のサイズの塩の粒で取得) パフォーマンスが得られます。
お気に入りの言語を使用してSelenium RCを自動化します。Selenium の 100 スレッドを開始し、それぞれが入力にファイルのパスを入力して [送信] をクリックします。
順番に名前が付けられた 100 個のファイルを生成して、簡単にループできるようにするか、同じファイルを何度も使用することができます。