wrk快速上手

1min看完就能上手!

一句话介绍:wrk 是一个现代化的 HTTP 基准测试工具,它能够在单核 CPU 上以较少的线程产生强大的负载。

说白了是一个简单易用的接口性能测试工具,对开发人员(非运维)来说上手成本低,几乎零学习成本。

另外wrk是在linux环境下使用的,所以windows平台测试使用的话使用docker。

Linux环境使用wrk

这种教程很多,例如性能测试工具wrk教程

Docker中使用wrk

演示的宿主机为windows。

使用的容器仓库github地址

加上--rm,用完即删,是因为这个容器仅仅用于临时的简单测试,不会占空间。

执行run语句时本地若无镜像则自动会pull。

1
2
3
4
5
docker run --rm ghcr.io/william-yeh/wrk # 首次运行测试

docker run --rm ghcr.io/william-yeh/wrk -t<线程数> -c<并发量> -d<时间> --latency <接口地址> # 模板1

docker run --rm -v <宿主机上.lua脚本路径>:<容器内映射.lua文件> ghcr.io/william-yeh/wrk -t<线程数> -c<线程数> -d<时间> -s <容器内.lua文件> --latency <接口地址>

e.g.1,表示使用8个线程、并发量200,对百度进行8s的压测。

1
docker run --rm ghcr.io/william-yeh/wrk -t8 -c200 -d10s --latency http://www.baidu.com

e.g.2,路径写法是linux风格的、windows也可改为对应风格

1
docker run --rm -v $(pwd)/test.lua:/data/test.lua ghcr.io/william-yeh/wrk -t8 -c200 -d10s -s /data/test.lua --latency http://www.baidu.com

e.g.3,注意要测试宿主机(是Windows或macOS)的127.0.0.1时,要使用特殊的 DNS 名称host.docker.internal

1
docker run --rm -v E:\Project\java\test-project\wrkbench\test.lua:/data/test.lua ghcr.io/william-yeh/wrk -t50 -c200 -d30s -s /data/test.lua --latency http://host.docker.internal:8085/example/hello

ok你现在已经会举一反三了。

结果说明

压测百度的结果:

image-20251104145550455

结果说明:

可以看到最后每秒吞吐量约为215.20

image-20251104145834544

Latency:延迟。Req/Sec:每秒请求数。Stdev为标准差。

image-20251104150326968

Latency Distribution:分位延迟。可以理解为90%的请求能在390ms内,99%的请求再1.24s以内。

image-20251104150434335

可见错误0个,超时158个。

这里最后的Requests/sec是指所有线程的情况,所以和之前的Req/Sec数据不一样。

注意事项

压测结果与机器性能有关!

无法模拟一个接口的极限情况(因为一台机器压测力度有限)。