linux

wrk -更现代化的http压测工具

wrk 是一款更现代化的 http 压测工具,支持 lua 脚本,可以随心所欲的进行压力测试,相比 ab 命令,它更灵活,现在,wrk 已经成为了我压测的主要工具,而 ab 已经被逐渐抛弃。本文介绍 wrk 的基本命令以及配合 lua 脚本进行压测。

wrk 的官方网站是:https://github.com/wg/wrk ,在这里,你可以看到基本的介绍以及 下载 wrk.  下面是 wrk 的基本用法:

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 -c 32 -t 16 -d 3m -s ./post.lua http://localhost:18836/api/crm/wx/order/create 这个命令将使用16 个线程,并保持 32 个打开的连接,执行3分钟的压测,同时,使用了 lua 脚本,脚本名称为 post.lua ,现在,我们看看 post.lua 吧:

wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"
wrk.headers["token"] = "xxxxxx"
wrk.body = '{"appointTime":"2020-07-11 09:00"}'

lua 脚本如上,body 里是可以直接写 json string 的,不过需要用单引号括起来,除了 body 部分需要关心下 特殊符号外,就没什么了。

我们不难发现,wrk 更简单,但却很强大、自由。在我的实际测试中,wrk 几乎榨干了内存与cpu,而 ab 则远远达不到!

full-stack-trip

Share
Published by
full-stack-trip

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

java 枚举类实现的单例与 spring boot 枚举类依赖注入

我们知道,在单例的诸多实现里,…

4 年 ago