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 原创发布
转载请点名出处:全栈之旅 > wrk -更现代化的http压测工具
本文地址:https://www.kpromise.top/wrk-a-modern-http-benchmarking-tool/

发表评论

电子邮件地址不会被公开。 必填项已用*标注