Locust 是一个用于编写负载测试的开源工具,它使用 Python 进行编写和扩展,并提供了一个简单易用的界面来模拟大量用户同时访问你的应用程序,以评估其性能和稳定性。
主要特点:
-
基于 Python:Locust 使用 Python 进行编写和扩展,用户可以使用 Python 灵活地编写自定义的负载测试脚本。
-
分布式负载测试:Locust 支持分布式负载测试,可以在多台计算机上并行运行多个 Locust 实例,以模拟大规模用户访问。
-
基于协程的异步编程:Locust 使用基于 gevent 的协程来实现异步并发请求,可以有效地模拟大量用户并发访问,而不会消耗太多的系统资源。
-
可视化界面:Locust 提供了一个简单易用的 Web 界面,可以实时监控测试执行的状态、性能指标和错误情况。
-
灵活的脚本编写:用户可以使用 Python 编写负载测试脚本,通过定义用户行为和场景来模拟用户在应用程序中的操作和行为。
-
实时监控和报告:Locust 提供了丰富的实时监控指标和报告,包括响应时间、成功率、吞吐量等,帮助用户分析应用程序的性能和稳定性。
安装:
pip install locust
使用示例:
以下是一个简单的示例,演示了如何使用 Locust 编写一个简单的负载测试脚本:创建test.py文件:
from locust import HttpUser, task, between
class WebsiteUser(HttpUser):
wait_time = between(1, 2)
@task
def sse_test(self):
headers = {"Authorization": f"Token 5dca1e82f741acb445e8e5f6affca7c241618978"}
files = {'file': ('IMG_4324.PNG', open('./IMG_4324.PNG', 'rb'), 'image/jpeg')}
data = {'content': '你好啊!!!', 'model': 'claude-3-sonnet@20240229', 'conversation': 1721}
self.client.post("/api/v1/chat/question/", data=data, headers=headers, files=files)
终端执行:locust -f test.py
然后,访问 http://localhost:8089 来打开 Locust 的 Web 界面,可以通过界面设置并发用户数和持续时间,然后启动测试。
优点:简单方便,适合构造复杂的请求体,上传文件等场景。