wrk 基准测试技能介绍

本贴最后更新于 1603 天前,其中的信息可能已经事过境迁

wrk基准测试技能介绍

wrk简介

wrk 是一个开源的支持HTTP协议的基准测试工具,它的特点是高并发低损耗,安装部署简单,但是,不适合做多协议及复杂场景的性能测试。它原生支持LuaJIT脚本

wrk安装

linux系统中,首先需要安装git,因为代码开源在github上,运行依赖gcc、openssl

# 下载
git clone https://github.com/wg/wrk.git

# 编译
cd wrk	# 进入下载后的文件路径
make

wrk使用说明

image.png

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)

-c, 后面跟数字,代表http连接数

-d, 后面跟数字,代表持续运行时长

-t, 后面跟数字,代表启动多少个线程

-s, 后面跟脚本名称,脚本用lua编写

-H, 后面跟消息头

--latency 代表输出响应的详细信息

--timeout 后面跟设置的超时时长

-v, 版本信息

演示示例

wy@wy-PC:~/soft/wrk$ ./wrk -t4 -c100 -d60s --latency http://i-beta.cnblogs.com/
Running 1m test @ http://i-beta.cnblogs.com/
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    65.43ms  149.40ms   1.99s    94.52%
    Req/Sec   314.42    147.76   750.00     66.86%
  Latency Distribution
     50%   25.53ms
     75%   33.37ms
     90%   96.07ms
     99%  890.49ms
  71042 requests in 1.00m, 17.14MB read
  Socket errors: connect 0, read 0, write 0, timeout 648
Requests/sec:   1182.56
Transfer/sec:    292.12KB

image.png

命令:./wrk -t4 -c100 -d60s --latency 网址

-t4: 4个线程

-c100: 建立100个连接

-d60s: 持续运行60s

-- Latency: 显示详细响应信息

Running 1m test @ http://i-beta.cnblogs.com/: 向某个网址持续施压 1 分钟

4 threads and 100 connections:4个线程,共建立100个连接

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    65.43ms  149.40ms   1.99s    94.52%
    Req/Sec   314.42    147.76   750.00     66.86%

简易的聚合报告,显示 平均响值、标准方差、最大值、偏差振幅(值越大,说明离散程度越高)

Latency:响应时间分布

Req/Sec:每秒请求数

  Latency Distribution
     50%   25.53ms
     75%   33.37ms
     90%   96.07ms
     99%  890.49ms

50% 75% 90% 99%的响应时间分布图表

71042 requests in 1.00m, 17.14MB read: 在 1 分钟内,共请求了71042次,读取了17.14MB数据

Socket errors: connect 0, read 0, write 0, timeout 648:本次测试,连接错误 0 次, 读取错误 0 次, 写错误 0 次, 超时错误 648 次

Requests/sec: 1182.56: 本次测试,所有线程平均每秒 1182.56 次请求

Transfer/sec: 292.12KB: 本次测试, 所有请求的平均吞吐量为 292.12KB

想要更深入了解wrk功能,可以在github上 查看帮助文档:https://github.com/wg/wrk/blob/master/README.md 对应lua语言,有兴趣的同学,请自行学习。


获得更多有趣有料的软件测试技能,欢迎关注 柠檬班微信公众号。

1 操作
Allen 在 2020-08-06 17:22:23 更新了该帖
回帖
请输入回帖内容 ...