edo1z blog

プログラミングなどに関するブログです

abコマンド

Apache Benchというらしい。これ使って負荷チェックしてみる。

詳細はここに書いていたので、見ていただければと思います。

$ ab -n 100 -c 100 https://example.com/

cが、同時接続数で、nが合計リクエスト数だそうです。100ユーザが同時に2リクエストする場合は、下記です。

$ ab -n 200 -c 100 https://example.com/

この数値を上げて、嫌いなサイトに向けて実行すると、DOS攻撃になりますので、絶対にやめましょう。ちなみに、https://example.comだとinvalid urlといわれますね。https://example.com/というふうに最後にスラッシュが必要っぽいです。

実行結果

Concurrency Level:      30
Time taken for tests:   0.691 seconds
Complete requests:      30
Failed requests:        0
Total transferred:      3620580 bytes
HTML transferred:       3611130 bytes
Requests per second:    43.40 [#/sec] (mean)
Time per request:       691.295 [ms] (mean)
Time per request:       23.043 [ms] (mean, across all concurrent requests)
Transfer rate:          5114.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       59   62   1.8     63      65
Processing:    67  349 179.7    375     625
Waiting:       61  345 179.2    374     623
Total:        125  410 181.5    437     690

Percentage of the requests served within a certain time (ms)
  50%    437
  66%    504
  75%    562
  80%    625
  90%    688
  95%    689
  98%    690
  99%    690
 100%    690 (longest request)

Requests per second が、1秒間にさばけるリクエスト数だそうです。今回は、43くらい。これはab -n 100 -c 100でもほぼ同じでした。

Time per request(mean, across all concurrent requests) が、1リクエスト当たりの処理時間だそうです。今回は、23msでした。これもab -n 100 -c 100でもほぼ同じでした。

でも、実行場所によって、全然結果が違う。別の環境だと、Requests per secondが、10くらい。Time per requestが、101msでした。