wrk 使用

简述

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

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

简单使用

常用参数包括:

  • -t,线程数,建议机器核数
  • -d,测试时间,默认单位秒(s),支持 s/m/h 单位,比如 1m
  • -c,打开连接数,需要大于 -t 参数数值
  • -s,脚本(lua)文件地址
  • –latency,打印延时统计信息

简单使用:

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

 

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

或者:

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

扩展

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

  • setup(thread),线程只执行一次
  • init(args),线程只执行一次
  • delay(),每次请求调用,可以延迟多少 ms
  • request(),每次请求调用
  • response(status, headers, body),每次请求调用
  • done(summary, latency, requests),整个过程结束一次

变量结构:

  1. wrk = {
  2. scheme = "http",
  3. host = "localhost",
  4. port = nil,
  5. method = "GET",
  6. path = "/",
  7. headers = {},
  8. body = nil,
  9. thread = <userdata>,
  10. }

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

1.POST 请求

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

2.随机请求

  1. math.randomseed(os.time())
  2. request = function()
  3. n = math.random(10, 20)
  4. return wrk.format('POST', '/xx', nil, 'xx-' .. n)
  5. end
  6. -- wrk.format(method, path, headers, body)

3.header 添加

  1. wrk.headers['X-Ha'] = 'xxx'
网络随笔

新版的Win10如何设置自动登录

2022-7-8 17:01:02

网络技巧网络随笔

永久免费4核32G的LinuxVPS

2022-7-18 12:33:16

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索