locust

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
--------------------------------------------------------------------------------------------------------------------------------------------


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