株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

ApacehBenchでの負荷テストをやったので、忘れないうちに覚えておかないといけないことはメモっておこうね。

-nが合計リクエスト数、-cが平行する処理数。なので、以下の場合100リクエストを10列並行して投げる。

# ab -n 100 -c 10 https://vamdemicsystem.black

FailedRequestが0であれば、処理しれきれていること。
だんだん、並列数、リクエスト数を増やしていき、FailedRequestが発生してきたタイミングが現状での限界。
なので、ミドルウェアのエラーログやアプリケーションログを見始める必要があるよ。

ちなみに、1番最初のリクエストで取得したサイズをそれ以降のリクエストを照合し、サイズが同じならComplete、違った場合Failedとなるらしい。
なので、リクエストごとにサイズが変化するページをテストする場合は、サーバ内のアクセスログがすべて200で処理されていることを確認する必要があるみたい。

その他にも、
・httpdをインストールすれば、バンドルされてる
・「https」は非対応?
・abコマンドを実行するマシンのスペックにも左右される
・ネットワーク的に近いマシンから実行するほうが、障害となる要因がすくないので、より現実的なテストになる(と思う)
・Windows用のApacehBenchはとてつもなく遅い気がするので、全然並列してくれていない(が、WSLからなら普通に早かった)
・社内NWからとかは怒られちゃうからやめようね

# 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コマンドを実行しているマシン。相手先ではないよ。

socket: Too many open files (24)

なので、上限をulimitコマンドで増やしてあげる。

# ulimit -n
1024

# ulimit -n 204800

# ulimit -n
204800

<スポンサーリンク>

3 Comments

3 Records

  1. on 2018年12月21日 at 9:31 PM
    たに wrote:

    負荷テストは、シナリオの立て方によって、想定した運用と違う負荷をかけてしまい、判断を誤る場合がよくあります。
    たとえば、1000人が同時アクセスして、入力して、処理を実行する、といった場合、入力画面がひらいたら、すぐにリクエストを投げるというシナリオを組んでしまうと、想定より高い負荷をかけてしまうことになります。

    また、リクエストごとにサイズが変化するページをテストする場合は、他の負荷テストツールを用いたほうがよいかもしれないですね。

    返信
    • on 2018年12月21日 at 9:35 PM
      たに wrote:

      あと、忘れてましたが、httpsにリクエストを投げるときは、absコマンドを使いますので、それでいけるかと。

      返信
      • on 2018年12月28日 at 2:35 PM
        yuta wrote:

        ありがとうございます!なるほど勉強になります。
        absっていうhttps対応のもあるんですね。参考にさせていただきます!

        返信

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)