目录
7.在 macOS 上,您可以使用Homebrew来安装wrk也可以下载源码make
1. wrk 是什么
wrk 是一个现代的 HTTP 基准测试工具,用于对 Web 服务器进行性能测试和负载测试。它可以模拟大量的并发连接,并测量服务器的响应时间、吞吐量和错误率等指标,帮助开发人员评估和优化 Web 服务器的性能。
2. 它的作用和优势
性能测试: wrk 可以帮助开发人员评估 Web 服务器在高并发情况下的性能表现,发现性能瓶颈和优化空间。
负载测试: 通过模拟大量并发连接,wrk 可以对服务器进行负载测试,以确定服务器在不同负载下的响应能力。
结果分析: wrk 提供详细的测试结果,包括平均响应时间、吞吐量、请求错误率等指标,帮助开发人员分析服务器的性能表现和瓶颈。
wrk 的主要特点和功能介绍:
1. 灵活的配置选项:
可以通过命令行参数灵活地配置并发连接数、测试持续时间、请求方式、请求头、请求体等参数,以满足不同的测试需求。
2. 高性能的并发模拟:
wrk 使用高效的事件驱动模型和多线程并发机制,可以模拟大量的并发连接,以确保测试结果的准确性和可靠性。
3. 详细的测试报告
wrk 提供详细的测试报告,包括平均响应时间、吞吐量、请求错误率等指标,以及请求响应时间分布图表,帮助开发人员全面了解服务器的性能表现。
4. 跨平台支持
wrk 支持在 Linux、Windows 和 macOS 等主流操作系统上运行,具有良好的跨平台兼容性。
5. 使用方便
wrk 的使用方法简单明了,可以通过命令行轻松启动测试,并且提供了丰富的文档和示例,方便开发人员快速上手和定制测试。
6.wrk在linux安装
命令行输入一下命令下载 wrk 源码
git clone https://github.com/wg/wrk.git
随后进入 wrk 目录并进行编译
cd wrk
make
随后将生成一个可执行的 wrk 文件,我们可以把这个文件拷贝到我想要的地方,或者直接拷贝到 bin 目录
cp wrk /usr/local/bin/
7.在 macOS 上,您可以使用Homebrew来安装wrk也可以下载源码make
brew install wrk
wrk -v或wrk
如果有以下显示,则说明安装成功了
wrk 4.2.0 [kqueue] Copyright (C) 2012 Will Glozer
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
--latency Print latency statistics
--timeout <T> Socket/request timeout
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
8.使用wrk进行简单的性能测试
下面是一个使用wrk进行简单性能测试的示例:
wrk -t10 -c30 -d2s -T5s --latency http://www.baidu.com
Running 2s test @ http://www.baidu.com
10 threads and 30 connections
平均值 标准差 最大值 正负一个标准差占比
线程统计 Thread Stats Avg Stdev Max +/- Stdev
响应时间 Latency 200.85ms 192.21ms 1.08s 87.09
每线程每秒完成请求数Req/Sec 17.29 10.65 50.00 68.75%
Latency Distribution 延迟统计
50% 135.61ms 有50%的请求执行时间是在135.61ms内完成
75% 201.79ms 有75%的请求执行时间是在201.79ms内完成
90% 456.45ms 有90%的请求执行时间是在456.45ms内完成
99% 899.49ms 有99%的请求执行时间是在899.49ms内完成
322 requests in 2.05s, 3.25MB read 2秒执行了322个请求,读了3.25MB数据
Requests/sec: 157.42 每秒请求数
Transfer/sec: 1.59MB 每秒钟读取1.59MB数据量
在这个示例中:
-t10
:指定10个线程。