性能压测工具之wrk介绍与使用
在现代软件开发中,压力测试是评估系统性能、稳定性和可靠性的重要手段。本文将介绍压力测试的相关术语,详细讲解高性能 HTTP 压力测试工具 wrk 的安装与使用,帮助您有效地评估系统性能。
1. 压力测试相关术语
在进行压力测试前,了解以下术语有助于更好地分析和理解测试结果。
- 响应时间(RT):系统对请求作出响应所需的时间,即从发送请求到收到响应的时间间隔。
- 吞吐量(Throughput):系统在单位时间内处理的请求数量,通常以每秒请求数表示。
- QPS(Queries Per Second):每秒查询率,指服务器每秒能够响应的查询次数,是衡量服务器处理能力的重要指标。
- TPS(Transactions Per Second):每秒事务处理量,指系统每秒能够处理的交易或事务数量。
- 并发连接数:在同一时刻与服务器建立的活动连接总数。
2. 安装 wrk
wrk 是一款现代的 HTTP 压力测试工具,具备高性能、多线程等特性。以下介绍在不同操作系统上安装 wrk 的方法。
2.1 使用 Homebrew 安装(macOS)
对于 macOS 用户,可使用 Homebrew 进行安装:
brew install wrk
2.2 源码编译安装(Linux)
安装步骤:
安装依赖
# 更新包列表并安装 git 和 gcc sudo yum update sudo yum install -y git gcc
下载源码
# 进入源码存放目录 cd /usr/local/src # 克隆 wrk 源码仓库 sudo git clone https://github.com/wg/wrk.git
编译安装
# 进入 wrk 目录 cd wrk # 编译源码 make
配置环境
# 将可执行文件移动到系统路径 sudo cp wrk /usr/local/bin/
2.3 验证安装
使用以下命令验证 wrk 是否安装成功:
wrk --help
如果显示 wrk 的帮助信息,说明安装成功。
3. wrk 的基本使用
wrk 提供了丰富的参数,支持自定义请求、并发数、持续时间等设置。
3.1 常用命令参数
-c, --connections <N>
:总连接数(并发数),默认值为10
。-d, --duration <T>
:测试持续时间,如2s
(秒)、2m
(分钟)、2h
(小时),默认值为10s
。-t, --threads <N>
:线程数,默认值为2
。-s, --script <file>
:指定 Lua 脚本,用于自定义请求或响应处理。-H, --header <header>
:添加 HTTP 请求头,可多次使用。--latency
:在测试结束后报告详细的延迟统计信息。--timeout <T>
:设置请求超时时间,默认值为2s
。--rate <R>
:限制每秒请求数(RPS),默认不限速。
3.2 执行测试示例
以下命令演示了如何使用 wrk 对本地的用户注册接口进行压力测试:
wrk -t1 -c2 -d1s -s ./scripts/wrk/signup.lua http://localhost:8080/users/signup
参数解析:
-t1
:使用 1 个线程。-c2
:总共建立 2 个连接。-d1s
:测试持续时间为 1 秒。-s ./scripts/wrk/signup.lua
:使用指定的 Lua 脚本自定义请求。http://localhost:8080/users/signup
:目标测试的 URL。
说明:
该命令使用 1 个线程和 2 个连接,在 1 秒内对指定的用户注册接口进行压力测试。Lua 脚本 signup.lua
用于生成自定义的注册请求数据。
3.3 测试结果解析
执行上述命令后,wrk 将输出测试结果,例如:
Running 1s test @ http://localhost:8080/users/signup
1 threads and 2 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 64.63ms 711.72us 67.28ms 90.00%
Req/Sec 29.80 10.76 40.00 80.00%
30 requests in 1.01s, 3.78KB read
Requests/sec: 29.81
Transfer/sec: 3.76KB
结果解释:
总体信息:
Running 1s test @ ...
:测试持续时间和目标 URL。1 threads and 2 connections
:使用的线程数和连接数。
线程统计(Thread Stats):
Latency(延迟)
Avg
:平均延迟时间(64.63ms)。Stdev
:延迟的标准差(711.72μs)。Max
:最大延迟时间(67.28ms)。+/- Stdev
:有 90% 的请求延迟在平均值的一个标准差范围内。
Req/Sec(每秒请求数)
Avg
:平均每秒请求数(29.80)。Stdev
:每秒请求数的标准差(10.76)。Max
:最大每秒请求数(40.00)。+/- Stdev
:有 80% 的请求数在平均值的一个标准差范围内。
总体请求统计:
30 requests in 1.01s, 3.78KB read
:总共完成了 30 个请求,用时 1.01 秒,读取了 3.78KB 的数据。
性能指标:
Requests/sec
:平均每秒完成的请求数(29.81)。Transfer/sec
:平均每秒传输的数据量(3.76KB)。
总结:
在本次测试中,系统在 1 秒内处理了 30 个请求,平均每秒处理约 29.81 个请求,平均延迟为 64.63 毫秒。该结果可用于评估系统的性能和稳定性,为优化提供数据支持。
4. 总结
通过本文的介绍,您应该对压力测试的基本概念和 wrk 工具的使用有了清晰的了解。掌握这些知识,您可以更有效地评估系统性能,发现潜在的问题,并进行针对性的优化。
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/wrk.html
转载时须注明出处及本声明