· wrk linux

wrk 使用

wrk 使用小记,备忘用

简述

主要用于 HTTP 类接口压测,作为 ab(Apache Bench)替代品,支持脚本方式进行扩展

安装过程这里不再赘述,运行方式可以:

简单使用

常用参数包括:

简单使用:

$ wrk -d10m -t24 -c100 --script=write.lua \
  --latency "http://127.0.0.1:8080/xx"
Running 10m test @ http://127.0.0.1:8080/xx
  24 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     9.02ms   57.73ms   1.04s    98.13%
    Req/Sec     1.81k   217.80     2.76k    89.74%
  Latency Distribution
     50%    1.93ms
     75%    2.78ms
     90%    4.33ms
     99%  245.27ms
  25472002 requests in 10.00m, 5.88GB read
Requests/sec:  42447.34
Transfer/sec:     10.04MB

类似如此的结果,需要关注的无非是:req/sec,latency 分布

或者:

$ docker run -it --rm --net host williamyeh/wrk \
  -d10m -t24 -c100 --latency "http://127.0.0.1:8080/xx"
...

扩展

除去基本使用,还可以使用脚本(lua)来实现一些定制的需求,能 hook 扩展点包括:

变量结构:

wrk = {
    scheme  = "http",
    host    = "localhost",
    port    = nil,
    method  = "GET",
    path    = "/",
    headers = {},
    body    = nil,
    thread  = <userdata>,
}

官方源码 https://github.com/wg/wrk/tree/master/scripts 这里有一些简单的例子可以参考

1.POST 请求

wrk.method = 'POST'
wrk.body = 'xxx'

2.随机请求

math.randomseed(os.time())

request = function()
    n = math.random(10, 20)
    return wrk.format('POST', '/xx', nil, 'xx-' .. n)
end

-- wrk.format(method, path, headers, body)

3.header 添加

wrk.headers['X-Ha'] = 'xxx'

-EOF-