使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试

 目录

 

正文

0. 简要介绍

WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果。

PS:Wrk 并不能针对测试的结果生成动态的图表,如果有这种需要,可以尝试使用另一款工具 Vegeta。该项目使用的 Golang 进行编写,其 GitHub 地址为:https://github.com/tsenart/vegeta

下面的内容就是一个标准的测试结果信息:

# 针对 127.0.0.1:8080 进行压力测试 wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
# 这里是测试结果 Running 30s test @ http://127.0.0.1:8080/index.html   12 threads and 400 connections   Thread Stats   Avg      Stdev     Max   +/- Stdev     Latency   635.91us    0.89ms  12.92ms   93.69%     Req/Sec    56.20k     8.07k   62.00k    86.54%   22464657 requests in 30.00s, 17.76GB read Requests/sec: 748868.53 Transfer/sec:    606.33MB

1. 安装

关于 OS X 与 Windows 的安装可以参考 Wrk 官方 WIKI 进行操作,本文主要讲解一下 CentOS 7.x 下如果进行编译。

sudo yum groupinstall 'Development Tools' sudo yum install -y openssl-devel git  git clone https://github.com/wg/wrk.git wrk cd wrk make

编译之后,你会得到如下结果:

可以看到生成了一个 wrk 的可执行文件,你可以将其添加到环境变量的 PATH 当中,这里就不再赘述,我们等会儿使用的时候直接 ./wrk 使用。

执行了上述代码之后我们可以看到很直观的信息,第一个就是 20s 的时间内完成了 2887 次请求,一共接受到了 2.46MB 的数据。在 Socket errors 里面我们可以看到有 35 个请求产生了超时的情况,每秒执行的请求大概为 144.20 个,每秒的数据传输大概为 125.75 KB。

除此之外,还说明了平均每次请求所消耗的时间为 338.44 ms,最极端的情况为 994.27ms。

5.1 WRK 的全局属性

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

5.2 WRK 的全局方法

-- 生成整个request的string,例如:返回 -- GET / HTTP/1.1 -- Host: tool.lu function wrk.format(method, path, headers, body)  -- 获取域名的IP和端口,返回table,例如:返回 `{127.0.0.1:80}` function wrk.lookup(host, service)  -- 判断addr是否能连接,例如:`127.0.0.1:80`,返回 true 或 false function wrk.connect(addr)

5.3 Setup 阶段

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信