ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション

LocustのデフォルトのHTTPクライアント実装は、python独自のモジュール要求を使用することがわかっています。これは、http要求を送信するためのニーズを満たしています。ただし、大規模なストレステストを実行する場合、このデフォルトの方法は最もリソースを節約する方法ではありません。Locustは、リクエストの代わりにgeventhttpclientを使用するより高速なHTTPクライアントの実装を公式に提供しました。公式ニュースによると、同時実行量を5〜6倍に増やすことができます。

この方法を使用した場合の効果を検証するために、実験ケースを使用して、ローカストがテストマシンのCPUリソースを判断することを検証します。

実験シナリオ:100人の仮想ユーザーをシミュレートしてブログ投稿を開きます。Locust WebUI設定は次のとおりです。

ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション

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

実行結果は以下のとおりです。
ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション

テストマシンのCPU消費量:(CPU使用率は13.5%)
ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション
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()

実行結果は以下のとおりです。
ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション

テストマシンのCPU消費量:(CPU使用率は8.8%)
ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション
比較テストは2019 Mac Pro(2.3 GHz、i5)マシンで実行されますが、とにかく、このような単純な比較テストの結果からFastHttpUserの使用は、リソースの消費を減らすことです。この方法でFastHttpUserもお勧めします。
ローカストパフォーマンス-ゼロベースのエントリシリーズ(15)-より高速なHTTPクライアントアプリケーション

おすすめ

転載: blog.51cto.com/13734261/2571581