🀄

サクッとWEBフロントに対して高負荷テストしたい

2022/05/08に公開

対象読者

  • WEBアプリに対して、高負荷をかけてもサーバがダウンしないか確認したい人。
  • Auto Scaring(負荷に応じてCPUなどのリソースを増減する)することを確認したい人。
  • ブラウザを何個か立ち上げて、画面をひたすら叩くといった人力テストをしたくない人。

解決策

ApachBench(ab)を利用します。

利用手順

まずはターミナルを立ち上げて、abコマンドと叩きます。
Macの場合、標準で入っているぽいです。
Windowsの場合は、Windows Subsystem Linux(WSL)を導入しましょう。
WSLは、Windows Storeで、Ubuntuと検索して、クリックしてインストールすればOK。
以下は、WSLでabコマンドを叩いたときの挙動です。
image.png
コマンドが見つからないと表示されるので、インストールします。

abをインストールする
apt-get update
apt install apache2-utils -y

image.png
インストールできました。

abコマンドは以下のように使います。

abコマンドサンプル
ab -n <総リクエスト数> -c <同時接続数> <URL>

使用例

実際に自分のPC上に立ち上げたWEBサーバに対して、大量のリクエストをぶん投げます。

abコマンド実行例
root@******:~# ab -n 10000 -c 1000 http://localhost:3000/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:
Server Hostname:        localhost
Server Port:            3000

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      1000
Time taken for tests:   3.240 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      2110000 bytes
HTML transferred:       120000 bytes
Requests per second:    3086.86 [#/sec] (mean)
Time per request:       323.954 [ms] (mean)
Time per request:       0.324 [ms] (mean, across all concurrent requests)
Transfer rate:          636.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   73 257.4      6    1080
Processing:    21  209  51.7    212     334
Waiting:        5  112  50.9    107     309
Total:         22  282 276.5    217    1394

Percentage of the requests served within a certain time (ms)

abコマンド実行したあとに確認するポイント

  • Concurrency Level : 同時実行数
  • Time taken for tests : テスト時間
  • Complete requests : 総リクエスト数
  • Failed requests : 失敗したリクエスト
  • Total transferred : 転送量(全体)
  • HTML transferred : 転送量(HTML)
  • Requests per second : 1秒間あたりのリクエスト数
  • Transfer rate : 転送レート

image.png
2回コマンド実行したときのCPU使用率状況です。
CPU使用率が上昇したことを確認できました。

以上です。

Discussion