サーバを構築した際や、サービス開発を行った際にどのくらいまでのアクセスに耐えられるのかテストを行います。
その際に利用するのが、今回紹介します「Apache Bench」です。
導入も使い方もとても簡単なので、今後の作業後にやっておくことで、思わぬアクセス増加でのサーバダウンを未然に防げるかもしれません。
導入方法
各OSごとで違いますが、パッケージ管理ツールで簡単に入れることができます。
CentOSの場合
sudo yum install apr-util
Ubuntuの場合
sudo apt install apache2-utils
使い方
上記の導入を行うことで、「ab」というコマンドが利用可能になります。
通常は「-c」や「-n」のオプションを使うことで、同時リクエスト数、総リクエスト数などが指定することができます。
ab -n [総リクエスト数] -c [同時リクエスト数] [URL]
もうちょっとわかりやすく、実際の値での例をあげてみます。
ab -n 100 -c 10 http://localhost/
これを実行すると、総リクエスト数が100で同時リクエストが10のため、10回の処理が、http://localhost/宛てにアクセスが行われます。
実行後に、以下のような結果が表示されます。
This is ApacheBench, Version 2.3 <$Revision: 1430300 $> 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)…..done Server Software: nginx Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 40695 bytes Concurrency Level: 10 Time taken for tests: 6.709 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 4106100 bytes HTML transferred: 4069500 bytes Requests per second: 14.90 #/sec Time per request: 670.936 ms Time per request: 67.094 [ms] (mean, across all concurrent requests) Transfer rate: 597.65 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 55 190 39.1 192 385 Waiting: 55 190 39.1 192 385 Total: 56 190 39.0 192 385 Percentage of the requests served within a certain time (ms) 50% 192 66% 203 75% 210 80% 215 90% 231 95% 239 98% 251 99% 385 100% 385 (longest request)
Complete requestsは、正常に処理できた件数となります。
エラーとなった件数については、Failed requestsに表示されます。
Requests per secondは、1秒間に何件のリクエストを処理できるかと言うことですので、今回の場合には14~15件のリクエストが処理可能と言うことです。
また今回の場合、Connection Times (ms) の個所の結果から、1リクエストの処理にかかった時間は56(Totalのminを参照)~385ミリ秒(Totalのmaxを参照)で、平均は190ミリ秒と言うのがわかります。
限界値の探り方
最初は低い数値からスタートし、Failed requestsが0以上になる場合や、Requests per secondが著しく落ち込む場合には、その辺りが現状での限界値と思われます。
※負荷テスト時には、CPUやメモリなども確認すると更に良いです。
ApacheやNginxなどの設定を変更することで、限界値が大きく変わってくるため、設定値を変更しつつCPUやメモリの使用率を確認しながら、ベストな値を見つけ出してください。
総括
簡単に負荷テストができますが、設定値を上げるとサーバの負荷が上がりすぎてダウンしてしまうことや、最悪の場合にはサーバ自体を停止されることもありますので、アプリの同時接続の検証を行う場合にはローカル環境を利用した方が良いでしょう。
各事業者で、負荷試験をする際に事前連絡をする必要があるところもありますので、確認してから実施することをおすすめします。