跳到主要内容

wrk 性能测试安装使用参数解析

· 阅读需 4 分钟
素明诚
Full stack development

安装 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 响应,或者进行条件测试等。这可以帮助你进行更细致的性能调优。