wrk 性能测试安装使用参数解析
安装 Git 和编译工具
这里使用 git 安装
sudo apt-get update
sudo apt-get install git build-essential libssl-dev
克隆 wrk 的 Git 仓库
使用 Git 克隆 wrk
的代码仓库到本地
git clone https://github.com/wg/wrk.git
cd wrk
编译 wrk
进入克隆的目录后,根据仓库中的指导文档编译源代码。对于 wrk
,使用 make
命令进行编译
make
这一步会编译 wrk
并生成执行文件。
安装 wrk
编译完成后,你可以选择将编译好的 wrk
可执行文件复制到系统的可执行路径中,例如 /usr/local/bin
,以便可以从任何位置运行它
sudo cp wrk /usr/local/bin
验证安装
安装完成后,你可以运行以下命令来验证 wrk
是否安装成功
wrk --version
wrk 常用参数
常用参数位于前面,不太常用的参数放在后面:
参数 | 描述 | 示例值 |
---|---|---|
-c, --connections N | 指定打开的持久连接数 | -c 400 表示 400 个并发连接 |
-d, --duration T | 指定测试持续时间 | -d 30s 表示持续 30 秒 |
-t, --threads N | 指定使用的线程数 | -t 12 表示使用 12 个线程 |
-s, --script S | 加载 Lua 脚本文件,自定义请求生成和处理 | -s script.lua 加载名为 script.lua 的脚本 |
-H, --header H | 添加自定义 HTTP 头到请求中 | -H "Authorization: Bearer token" |
--latency | 打印延迟统计信息 | --latency |
--timeout T | 设置套接字和 HTTP 请求的超时时间 | --timeout 2s |
-v, --version | 打印 wrk 的版本信息 | -v |
API 测试
如果是本地测试,线程数一般指定你电脑的总核数/2 即可
wrk -t1 -c2 -d10s http://example.com
Running 10s test @ http://example.com
1 threads and 2 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 276.12ms 127.41ms 953.21ms 94.81%
Req/Sec 8.23 2.60 10.00 68.75%
73 requests in 10.01s, 114.87KB read
Requests/sec: 7.29
Transfer/sec: 11.48KB
API 参数解析
参数 | 描述 | 示例数据 |
---|---|---|
Latency Avg | 平均延迟,表示所有请求的平均响应时间 | 276.12ms |
Latency Stdev | 延迟的标准偏差,表示延迟的波动程度 | 127.41ms |
Latency Max | 最大延迟,单个请求的最长响应时间 | 953.21ms |
+/- Stdev | 延迟是否稳定,表示超过平均延迟的请求百分比 | 94.81% |
Req/Sec Avg | 每秒处理的平均请求数 | 8.23 |
Req/Sec Stdev | 每秒请求处理数的标准偏差,表示吞吐率的波动程度 | 2.60 |
Req/Sec Max | 每秒处理的最大请求数 | 10.00 |
Requests Total | 在整个测试期间发出的总请求数 | 73 |
Duration | 测试持续的总时间 | 10.01s |
Data Transferred | 在测试期间总共传输的数据量 | 114.87KB |
Requests/sec | 每秒处理的请求数,反映了服务器的吞吐能力 | 7.29 |
Transfer/sec | 每秒传输的数据量,这可以帮助了解网络带宽的使用情况 | 11.48KB |
关注参数
重点关注平均延迟(反映服务器响应速度)、请求/秒(衡量服务器吞吐能力),以及最大延迟(显示最慢的响应时间),这些指标对理解服务器的性能和用户体验至关重要。
Latency (延迟)
平均延迟 (Latency Avg):这是衡量服务器响应速度的主要指标,表示从发出请求到收到响应的平均时间。服务器响应越快,用户体验通常越好。
最大延迟 (Latency Max):显示了在测试期间遇到的最长响应时间。这个指标可以帮助识别可能的性能瓶颈或配置问题。
延迟波动 (+/- Stdev):描述延迟的一致性和可预测性。高波动可能表明服务器在高负载下表现不稳定。
吞吐量 (Throughput)
请求/秒 (Requests/sec):这是衡量服务器能够处理多少请求的关键指标。更高的值通常表示服务器可以在单位时间内处理更多的请求,表明更好的性能和更高的效率。
传输速率 (Transfer/sec):表示每秒传输的数据量,对于理解网络带宽的使用和服务器在传输数据方面的能力非常重要。
稳定性和可靠性
请求处理的标准偏差 (Req/Sec Stdev):提供了服务器处理请求能力的稳定性信息。较小的标准偏差意味着服务器表现更为一致。
注意事项
能跑多少,跟你的电脑有关,所以只要关注重点参数即可。推荐学习如何编写更复杂的 Lua 脚本来模拟用户行为、处理 HTTP 响应,或者进行条件测试等。这可以帮助你进行更细致的性能调优。