私はJMeterでいくつかの基本的なテストを書き始めましたが、測定値がApacheabの測定値と大きく異なることに驚いていました。
Nginxを実行しているInteli7サーバーとJMeterまたはabを実行しているi5テストマシンを接続するギガビットLANがあります。最初は、すぐに使用できるNginxホームページの応答率をテストしているだけです。
ab -c 1 -n 100 http://testserver.local/
与える
Document Path: /
Document Length: 151 bytes
Concurrency Level: 1
Time taken for tests: 0.078 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 38400 bytes
HTML transferred: 15100 bytes
Requests per second: 1280.77 [#/sec] (mean)
Time per request: 0.781 [ms] (mean)
Time per request: 0.781 [ms] (mean, across all concurrent requests)
Transfer rate: 480.29 [Kbytes/sec] received
この結果は一貫して再現可能であり、+/-数パーセントです。
JMeterには、以下を含む1ユーザーの100ループスレッドグループがあります。
- HTTPヘッダーマネージャーの設定Accept-Encoding:gzip
- HTTPGet/サンプラー
- 要約レポートリスナー
サンプルが100個しかないため、実行するたびに非常に一貫性のない結果が得られます。しかし、最も驚くべき事実は、スループットが1秒あたり40リクエスト(1280ではない)と報告されていることです。記録された最高のレートは1030でしたが、これは10,000サンプルに増やしたときにのみ達成されました。
JMeterはオーバーヘッドが高すぎて正確な測定ができないため、単純な負荷テストには不適切なツールであると私は考えていますか?