Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

負荷テストツール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
--------------------------------------------------------------------------------------------------------------------------------------------

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

booklive
株式会社BookLiveは書籍、マンガ、雑誌、写真集等の人気作品を取り扱う総合電子書籍ストアを運営しています。
https://booklive.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away