接口压测工具 --- Wrk
Mr.Lee 2024-04-25 11:06:20 Wrk
Wrk 是一款针对 Http 协议的基准测试工具, 它能够在单机多核 CPU 的条件下, 使用系统自带的高性能 I/O 机制, 如 epoll,kqueue 等. 通过多线程和事件模式, 对目标机器产生大量的负载.
PS: 其实, wrk 是复用了 redis 的 ae 异步事件驱动框架. 准确来说 ae 事件驱动框架并不是 redis 发明的, 它来自于 Tcl 的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而被大家所熟知.
# 使用说明
翻译一下:
使用方法: wrk <选项> <被测HTTP服务的URL>
Options:
-c, --connections <N> 跟服务器建立并保持的TCP连接数量
-d, --duration <T> 压测时间
-t, --threads <N> 使用多少个线程进行压测
-s, --script <S> 指定Lua脚本路径
-H, --header <H> 为每一个HTTP请求添加HTTP头
--latency 在压测结束后,打印延迟统计信息
--timeout <T> 超时时间
-v, --version 打印正在使用的wrk的详细版本信息
<N>代表数字参数,支持国际单位 (1k, 1M, 1G)
<T>代表时间参数,支持时间单位 (2s, 2m, 2h)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 测试报告
~$ wrk -c400 -d10s -t10 --latency https://www.baidu.com
Running 10s test @ https://www.baidu.com (压测10秒)
10 threads and 400 connections (10 个线程, 400个连接)
(平均) (标准差) (最大值) (正负一个标准差所占比例)
Thread Stats Avg Stdev Max +/- Stdev
(延迟)
Latency 117.18ms 160.26ms 1.81s 79.80%
(每秒请求数)
Req/Sec 36.15 22.10 121.00 64.94%
Latency Distribution (延迟分布)
50% 50.01ms
75% 61.48ms
90% 298.38ms
99% 776.30ms
2944 requests in 10.01s, 712.97KB read
Socket errors: connect 159, read 0, write 0, timeout 3
Requests/sec: 293.98
Transfer/sec: 71.20KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18