INFRA

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でした。