ApacehBenchでの負荷テストをやったので、忘れないうちに覚えておかないといけないことはメモっておこうね。
-nが合計リクエスト数、-cが平行する処理数。なので、以下の場合100リクエストを10列並行して投げる。
1 |
# ab -n 100 -c 10 https://vamdemicsystem.black |
FailedRequestが0であれば、処理しれきれていること。
だんだん、並列数、リクエスト数を増やしていき、FailedRequestが発生してきたタイミングが現状での限界。
なので、ミドルウェアのエラーログやアプリケーションログを見始める必要があるよ。
ちなみに、1番最初のリクエストで取得したサイズをそれ以降のリクエストを照合し、サイズが同じならComplete、違った場合Failedとなるらしい。
なので、リクエストごとにサイズが変化するページをテストする場合は、サーバ内のアクセスログがすべて200で処理されていることを確認する必要があるみたい。
その他にも、
・httpdをインストールすれば、バンドルされてる
・「https」は非対応?
・abコマンドを実行するマシンのスペックにも左右される
・ネットワーク的に近いマシンから実行するほうが、障害となる要因がすくないので、より現実的なテストになる(と思う)
・Windows用のApacehBenchはとてつもなく遅い気がするので、全然並列してくれていない(が、WSLからなら普通に早かった)
・社内NWからとかは怒られちゃうからやめようね
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# ab -n 100 -c 10 https://vamdemicsystem.black/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking vamdemicsystem.black (be patient).....done Server Software: Apache/2.4.6 Server Hostname: vamdemicsystem.black Server Port: 80 Document Path: / Document Length: 213 bytes Concurrency Level: 10 Time taken for tests: 0.131 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Non-2xx responses: 100 Total transferred: 46000 bytes HTML transferred: 21300 bytes Requests per second: 761.10 [#/sec] (mean) Time per request: 13.139 [ms] (mean) Time per request: 1.314 [ms] (mean, across all concurrent requests) Transfer rate: 341.90 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 4 6 0.8 6 8 Processing: 5 6 1.0 6 11 Waiting: 5 6 1.0 6 11 Total: 10 12 1.4 13 17 Percentage of the requests served within a certain time (ms) 50% 13 66% 13 75% 13 80% 13 90% 14 95% 14 98% 17 99% 17 100% 17 (longest request) |
このようなメッセージが出力されるときは、プロセスがオープンできるファイルディスクリプタの上限にあたってしまっているということ。
上限まできているのは、abコマンドを実行しているマシン。相手先ではないよ。
1 |
socket: Too many open files (24) |
なので、上限をulimitコマンドで増やしてあげる。
1 2 3 4 5 6 7 |
# ulimit -n 1024 # ulimit -n 204800 # ulimit -n 204800 |
3 Comments
3 Records
たに wrote:
負荷テストは、シナリオの立て方によって、想定した運用と違う負荷をかけてしまい、判断を誤る場合がよくあります。
たとえば、1000人が同時アクセスして、入力して、処理を実行する、といった場合、入力画面がひらいたら、すぐにリクエストを投げるというシナリオを組んでしまうと、想定より高い負荷をかけてしまうことになります。
また、リクエストごとにサイズが変化するページをテストする場合は、他の負荷テストツールを用いたほうがよいかもしれないですね。
たに wrote:
あと、忘れてましたが、httpsにリクエストを投げるときは、absコマンドを使いますので、それでいけるかと。
yuta wrote:
ありがとうございます!なるほど勉強になります。
absっていうhttps対応のもあるんですね。参考にさせていただきます!