LocustのデフォルトのHTTPクライアント実装は、python独自のモジュール要求を使用することがわかっています。これは、http要求を送信するためのニーズを満たしています。ただし、大規模なストレステストを実行する場合、このデフォルトの方法は最もリソースを節約する方法ではありません。Locustは、リクエストの代わりにgeventhttpclientを使用するより高速なHTTPクライアントの実装を公式に提供しました。公式ニュースによると、同時実行量を5〜6倍に増やすことができます。
この方法を使用した場合の効果を検証するために、実験ケースを使用して、ローカストがテストマシンのCPUリソースを判断することを検証します。
実験シナリオ:100人の仮想ユーザーをシミュレートしてブログ投稿を開きます。Locust WebUI設定は次のとおりです。
1)LocustのデフォルトのHttpUserを使用してシナリオを実装し、テストを実行します。
脚本:
from locust import task,between,HttpUser
class MyUser(HttpUser):
wait_time = between(3,5)
@task
def open_blog(self):
with self.client.get("/13734261/2538763",catch_response=True) as res:
if res.status_code == 200:
res.success()
else:
res.failure()
実行結果は以下のとおりです。
テストマシンのCPU消費量:(CPU使用率は13.5%)
2)FastHttpUserを使用してシナリオを実装し、テストを実行します。
脚本:
from locust import task,between
from locust.contrib.fasthttp import FastHttpUser
class MyUser(FastHttpUser):
wait_time = between(3,5)
@task
def open_blog(self):
with self.client.get("/13734261/2538763",catch_response=True) as res:
if res.status_code == 200:
res.success()
else:
res.failure()
実行結果は以下のとおりです。
テストマシンのCPU消費量:(CPU使用率は8.8%)
比較テストは2019 Mac Pro(2.3 GHz、i5)マシンで実行されますが、とにかく、このような単純な比較テストの結果からFastHttpUserの使用は、リソースの消費を減らすことです。この方法でFastHttpUserもお勧めします。