Locust运行配置与高级功能
本文是一份关于 Locust 性能测试工具的全面配置与运行指南,涵盖环境变量、配置文件、命令行参数、无头模式、分布式运行以及自定义扩展等核心内容。
一、 配置方式总览
Locust 支持多种配置方式,优先级从低到高依次为:
~/locust.conf(用户主目录)./locust.conf(当前目录)--config参数指定的文件- 环境变量 (格式:
LOCUST_<OPTION_NAME>) - 命令行参数 (最高优先级)
1.1 通过环境变量配置
1 | # Linux/macOS |
1.2 通过配置文件配置
创建 locust.conf 或 master.conf 文件:
1 | # master.conf 示例 |
使用配置文件运行:
1 | locust --config=master.conf |
二、 核心运行模式
2.1 基础命令与常用选项
| 命令行参数 | 环境变量 | 描述 |
|---|---|---|
-f, --locustfile |
LOCUST_LOCUSTFILE |
指定 Locust 测试脚本文件或目录。 |
-H, --host |
LOCUST_HOST |
设置待测试系统的基准 URL。 |
-u, --users |
LOCUST_USERS |
模拟的最大并发用户数。 |
-r, --spawn-rate |
LOCUST_SPAWN_RATE |
每秒孵化的用户数。 |
--web-host, --web-port -P |
LOCUST_WEB_HOST, LOCUST_WEB_PORT |
指定 Web UI 绑定的主机和端口。 |
2.2 无头模式运行 (Headless)
禁用 Web UI,直接通过命令行控制测试。
1 | locust -f locustfile.py --headless -u 100 -r 5 |
- 设置运行时间:使用
-t, --run-time参数(例如1h30m,300s)。 - 允许任务完成:使用
-s, --stop-timeout参数,在停止前等待任务完成迭代(例如--stop-timeout 10s)。 - 动态调整用户数:即使在无头模式下,也可按
w/W(增加1/10用户)或s/S(减少1/10用户)实时调整。
2.3 分布式运行
**主节点 (Master)**:负责协调和收集数据。
1 | locust -f locustfile.py --master --expect-workers 3 |
--expect-workers:指定期望连接的工作节点数,连接齐备后才开始测试。--master-bind-host/--master-bind-port:绑定主节点的接口和端口(默认*:5557)。
**工作节点 (Worker)**:执行实际的负载生成。
1 | locust -f locustfile.py --worker --master-host=192.168.1.100 |
--master-host/--master-port:指向主节点的地址。
无头模式下的分布式:主节点必须指定 --expect-workers 以等待工作节点就绪。
2.4 使用多个 Locustfile
- 指定目录:Locust 会递归扫描目录下的
.py文件(忽略locust.py和以_开头的文件)。1
locust -f locustfiles/
- 指定多个文件:用逗号分隔。
1
locust -f locustfile1.py,locustfile2.py,locustfile3.py
2.5 用户类选择器 (Class Picker)
使用 --class-picker 参数启动,可在 Web UI 中选择本次运行要使用的特定 User 类或 Shape 类,而不是运行所有类。
1 | locust -f locustfiles/ --class-picker |

三、 高级功能与定制
3.1 自定义命令行参数
通过 init_command_line_parser 事件钩子添加自定义参数,这些参数可自动同步到工作节点并在 Web UI 中显示。
1 | from locust import events |
3.2 定制统计信息设置
通过修改 locust.stats 模块的常量来调整统计行为。
1 | import locust.stats |
可定制参数:
STATS_NAME_WIDTH:控制台输出中请求名称列的宽度。CURRENT_RESPONSE_TIME_PERCENTILE_WINDOW:计算当前响应时间百分位数的窗口大小(秒)。
3.3 自定义退出条件与退出码
通过 quitting 事件监听器,可以基于测试结果(如失败率、响应时间)自定义进程退出码,便于集成到 CI/CD 流程。
1 | from locust import events |
注意:默认情况下,如果有任何请求失败,Locust 会以退出码 1 结束。可使用 --exit-code-on-error 参数改变此行为。
四、 其他实用配置选项速查
| 命令行参数 | 环境变量 | 用途简述 |
|---|---|---|
--autostart |
LOCUST_AUTOSTART |
自动开始测试(保留 Web UI)。 |
--autoquit |
LOCUST_AUTOQUIT |
测试结束后自动退出(需与 --autostart 同用)。 |
--web-auth |
LOCUST_WEB_AUTH |
为 Web UI 设置基础认证(格式:username:password)。 |
-T, --tags |
LOCUST_TAGS |
仅执行带有指定标签的任务。 |
-E, --exclude-tags |
LOCUST_EXCLUDE_TAGS |
排除带有指定标签的任务。 |
--csv |
LOCUST_CSV |
将统计数据保存为 CSV 文件(生成 *_stats.csv, *_stats_history.csv, *_failures.csv)。 |
--html |
LOCUST_HTML |
将 HTML 报告保存到指定文件。 |
--print-stats |
LOCUST_PRINT_STATS |
在控制台定期打印统计信息。 |
--only-summary |
LOCUST_ONLY_SUMMARY |
在无头模式下只打印最终摘要,禁止定期打印。 |
--loglevel -L |
LOCUST_LOGLEVEL |
设置日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)。 |
--logfile |
LOCUST_LOGFILE |
指定日志文件路径。 |