3
1

More than 5 years have passed since last update.

Locustでアクションごとに統計を出す

Posted at

負荷テストツールlocustの統計情報は、
デフォルトで与えたURLのパスごとに統計を取るので、
パスが一文字でも変わったら別ものとして統計が出力されます

これを要約して、MVCのアクション単位でスループット出せないのか気になって調べてみました。

やりたいこと

例えば

example.py
samazamana_words = [
  'word1',
  'word2',
...
  'word99999'
]
...
  @task
  def samazamana_task(self):
    self.client.get(
      "/search/keyword?word=" + samazamana_words[ random_value ] )

このようなコードを実行すると

---中略---

 Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /search/keyword?keyword=word2827                               1     0(0.00%)    1532    1532    1532  |    1500    0.14
 GET /search/keyword?keyword=word4593                               1     0(0.00%)     397     397     397  |     400    0.00
 GET /search/keyword?keyword=word4855                               1     0(0.00%)     837     837     837  |     840    0.14
 GET /search/keyword?keyword=word5200                               1     0(0.00%)    1669    1669    1669  |    1700    0.00
 GET /search/keyword?keyword=word5490                               1     0(0.00%)     480     480     480  |     480    0.14
 GET /search/keyword?keyword=word6364                               1     0(0.00%)     464     464     464  |     460    0.14
 GET /search/keyword?keyword=word6557                               1     0(0.00%)    1680    1680    1680  |    1700    0.14
 GET /search/keyword?keyword=word7042                               1     0(0.00%)    1219    1219    1219  |    1200    0.14
 GET /search/keyword?keyword=word7579                               1     0(0.00%)     787     787     787  |     790    0.00
 GET /search/keyword?keyword=word9205                               1     0(0.00%)     975     975     975  |     980    0.14
--------------------------------------------------------------------------------------------------------------------------------------------
 Total                                                             10     0(0.00%)                                       1.00

Percentage of the requests completed within given times
 Name                                                           # reqs    50%    66%    75%    80%    90%    95%    98%    99%   100%
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /search/keyword?keyword=word2827                                1   1500   1500   1500   1500   1500   1500   1500   1500   1532
 GET /search/keyword?keyword=word4593                                1    400    400    400    400    400    400    400    400    397
 GET /search/keyword?keyword=word4855                                1    840    840    840    840    840    840    840    840    837
 GET /search/keyword?keyword=word5200                                1   1700   1700   1700   1700   1700   1700   1700   1700   1669
 GET /search/keyword?keyword=word5490                                1    480    480    480    480    480    480    480    480    480
 GET /search/keyword?keyword=word6364                                1    460    460    460    460    460    460    460    460    464
 GET /search/keyword?keyword=word6557                                1   1700   1700   1700   1700   1700   1700   1700   1700   1680
 GET /search/keyword?keyword=word7042                                1   1200   1200   1200   1200   1200   1200   1200   1200   1219
 GET /search/keyword?keyword=word7579                                1    790    790    790    790    790    790    790    790    787
 GET /search/keyword?keyword=word9205                                1    980    980    980    980    980    980    980    980    975
--------------------------------------------------------------------------------------------------------------------------------------------

となり、パラメータごとに異なる集計が出てきます。
これらをすべて /search/keyword としてまとめた統計情報を出してほしくなりました。

まとめる

API - Locust 0.8.1 documentation

こちらに載ってました
(自分はソースコードを読みましたが、ちゃんとドキュメント読めという類ですね...)

getの引数にnameを追加するだけです。
もちろんpostでも大丈夫です

例えば

locustfile.py
samazamana_words = [
  'word1',
  'word2',
...
  'word99999'
]
...
  @task
  def samazamana_task(self):
    self.client.get(
      "/search/keyword?word=" + samazamana_words[ random_value ], name = "/search/keyword" )

このように書くと

result.txt
-----中略-----

 Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /search/keyword                                               10     0(0.00%)    1060     227    1834  |    1100    0.88
--------------------------------------------------------------------------------------------------------------------------------------------
 Total                                                             10     0(0.00%)                                       0.88

Percentage of the requests completed within given times
 Name                                                           # reqs    50%    66%    75%    80%    90%    95%    98%    99%   100%
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /search/keyword                                                10   1100   1200   1300   1800   1800   1800   1800   1800   1834
--------------------------------------------------------------------------------------------------------------------------------------------

と要約した情報が出てくれます。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1