码迷,mamicode.com
首页 > 其他好文 > 详细

使用wrk进行性能测试

时间:2018-01-28 20:52:47      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:add   style   均值   duration   0ms   queue   div   ref   targe   

1 wrk介绍

wrk是一款现代化的HTTP性能测试工具,即使运行在单核CPU上也能产生显著的压力。它融合了一种多线程设计,并使用了一些可扩展事件通知机制,例如epoll and kqueue。

一个可选的LuaJIT脚本能产生HTTP请求,响应处理和自定义报告,更详细的脚本内容可以参考scripts目录下的一些例子。

2 wrk下载和安装

git clone https://github.com/wg/wrk.git  
cd wrk  
make  

编译成功后,目录下就会有一个wrk文件。如果编译过程中报错fatal error: openssl/ssl.h: No such file or directory,则需要安装openssl的库。

sudo apt-get install libssl-dev 

或者

sudo yum install  openssl-devel 

3 一个简单的例子

wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html

它将会产生如下测试,12个线程(threads),保持400个HTTP连接(connections)开启,测试时间30秒(seconds)。

详细的命令行参数如下:

-c,    --connections(连接数):      total number of HTTP connections to keep open with each thread handling N = connections/threads

-d,    --duration(测试持续时间):     duration of the test, e.g. 2s, 2m, 2h

-t,    --threads(线程):            total number of threads to use

-s,    --script(脚本):             LuaJIT script, see SCRIPTING

-H,    --header(头信息):           HTTP header to add to request, e.g. "User-Agent: wrk"

       --latency(响应信息):         print detailed latency statistics

       --timeout(超时时间):         record a timeout if a response is not received within this amount of time.

 

下面是输出结果:

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

结果解读如下:

Latency: 响应信息, 包括平均值, 标准偏差, 最大值, 正负一个标准差占比。
Req/Sec: 每个线程每秒钟的完成的请求数,同样有平均值,标准偏差,最大值,正负一个标准差占比。
30秒钟总共完成请求数为22464657,读取数据量为17.76GB。
线程总共平均每秒钟处理748868.53个请求(QPS),每秒钟读取606.33MB数据量。

4 发送post请求例子

首先需要创建一个post.lua文件,内容如下:

wrk.method = "POST"
wrk.headers["uid"] = "127.0.0.1"
wrk.headers["Content-Type"] = "application/json"
wrk.body     ={"uid":"127.0.0.1","Version":"1.0","devicetype":"web","port":"8080"}

其中Content-Type还有一种类型是 application/x-www-form-urlencoded

测试执行命令如下:

./wrk --latency -t100 -c1500  -d120s --timeout=15s -s post.lua http://127.0.0.1:8080/index.html

这个脚本加入了--lantency:输出结果里可以看到响应时间分布情况,

Running 2m test @ http://127.0.0.1:8080/index.html
  100 threads and 1500 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   127.26ms  157.88ms   2.44s    87.94%
    Req/Sec   177.91     45.09     1.10k    69.97%
  Latency Distribution
     50%   66.05ms
     75%  143.57ms
     90%  325.41ms
     99%  760.20ms
  2138290 requests in 2.00m, 3.17GB read
Requests/sec:  17804.57
Transfer/sec:  27.05MB

 

使用wrk进行性能测试

标签:add   style   均值   duration   0ms   queue   div   ref   targe   

原文地址:https://www.cnblogs.com/ycyzharry/p/8372168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!