MAGAZINE
ルーターマガジン
Apache BenchによるWeb APIのストレステスト入門
こんにちは、学生アルバイトのohkiです。弊社では、クローリングによるRPAのために、Web APIなどをご提供する機会も多いのですが、その際にWebサーバがどこまでの負荷に耐えられるか、パフォーマンスはどうかを気にしなければなりません。そんな時に気軽にWebサーバの性能を測定できるのがapache benchです。 それでは、実際に使ってみましょう。
手順
apache benchはapacheに付属している標準ツールなので、apacheがインストールされていればすぐに使用することができます。確認してみましょう。
ab -V This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
このように、apachebenchのバージョンを確認することができました。では、早速テストしてみましょう。 使うコマンドは基本的に以下の1つだけです。
ab -n 100 -c 10 -p /tmp/test.json [URL]
ここで使用しているオプションについて説明します。
-n [発行リクエスト数]
総リクエスト数を指定します。
-c [同時接続数]
同時にリクエストを発行するユーザーの数を指定します。
つまり、今回の場合、同時に10ユーザーが一人当たり100/10=10リクエスト発行するということになります。
-p [ファイルパス]
指定したurlに送信したいデータがある場合、ここでそのファイルを指定します。今回はPOSTで送信していますが、PUTで送信したい場合は-uオプションを使用します。
実行結果は以下のようになります。
Concurrency Level: 100 Time taken for tests: 0.700000 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Non-2xx responses: 100 Total transferred: 30000 bytes HTML transferred: 2700 bytes Requests per second: 128.00 [#/sec] (mean) Time per request: 779.000 [ms] (mean) Time per request: 7.000 [ms] (mean, across all concurrent requests) Transfer rate: 46.00 [Kbytes/sec] received
このように、"Time per request"から、1リクエストあたりの処理時間の平均がどのくらいの時間だったか、"Complete requests"から、何件のリクエストが成功したか、などを知ることができます。また、アクセスや同時接続数を上げていった時に、"Failed requests"が0ではなくなる時がWebサーバの処理の限界であると考えることができます。
まとめ
以上のように、簡単にWebサーバの性能を測定することができます。しかし、apache benchはDOS攻撃にも使えるツールですので、十分注意して使用しましょう。
CONTACT
お問い合わせ・ご依頼はこちらから