wrk 压测笔记

Posted 泰 戈 尔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wrk 压测笔记相关的知识,希望对你有一定的参考价值。

上次写了一篇 locust 压测笔记 开始是部署在自己的本地机器上,办公网测着都没啥问题,但是想部署在开发机上,发现开发机连不上外网,而且只有 Python2 环境,因此离线下载 locust 的路线卡死了。

对比了下目前的一些产品,还是决定选择这个小而精的工具了。

  1. 下载源码、编译、安装
git clone git@github.com:wg/wrk.git
cd wrk-master
make
make install
  1. 用法简介
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)

举例

wrk -t15 -c300 -d10 --latency -s generateIDCode.lua http://localhost:14077/test
  1. 嵌入 lua 脚本
wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"
wrk.body = '"A": "B": "C","D": "E","F": "G"'

或者

wrk.method = "POST"

wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
wrk.headers["User-Agent"] = "Mozilla/5.0 (Linux; android 9; PBEM00 Build/PKQ1.190519.001; wv) AppleWebKit/537.36 (Khtml, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36 haokan/5.16.1.1 (Baidu; P1 9)/OPPO_82_9_00MEBP/1008350n/45EB2DAB0E15DE5433DCA54DCD9F64D0%7CO/1/5.11.2.0/511020/1"

wrk.body = 'nid=11522422680314980636&appid=haokan&token=429817cebf14fc234f03d325feda4561&authorUid=12323434&sids=7294_2'

4 函数 override
wrk 中内嵌 lua 可以用一些函数进行 override,来实现一些辅助功能,比如

function response(status_code, headers, body)
    print(status_code, headers, body)
end
function request()
    wrk.method="POST"
    wrk.headers["Content-Type"] = "application/json"

    return wrk.format()
end

举例

wrk -t1 -c1 -d20s --latency --script=post.lua http://localhost:8080/my/interface

参考链接:wrk压测工具使用 https://www.cnblogs.com/garfieldcgf/p/10002698.html

以上是关于wrk 压测笔记的主要内容,如果未能解决你的问题,请参考以下文章

wrk 压测工具

小实验使用 wrk 的 docker 容器来压测另一个容器

Http压测工具wrk使用指南

Http压测工具wrk使用指南

wrk压测命令

HTTP压测工具wrk使用指南