Striveonger

vuePress-theme-reco Mr.Lee    2015 - 2025
Striveonger Striveonger
主页
分类
  • 文章
  • 笔记
  • 工具
标签
时间轴
author-avatar

Mr.Lee

264

Article

134

Tag

主页
分类
  • 文章
  • 笔记
  • 工具
标签
时间轴

接口压测工具 --- Wrk

vuePress-theme-reco Mr.Lee    2015 - 2025

接口压测工具 --- Wrk

Mr.Lee 2024-04-25 11:06:20 Wrk

Wrk 是一款针对 Http 协议的基准测试工具, 它能够在单机多核 CPU 的条件下, 使用系统自带的高性能 I/O 机制, 如 epoll,kqueue 等. 通过多线程和事件模式, 对目标机器产生大量的负载.

PS: 其实, wrk 是复用了 redis 的 ae 异步事件驱动框架. 准确来说 ae 事件驱动框架并不是 redis 发明的, 它来自于 Tcl 的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而被大家所熟知.

# 使用说明

image-20240427154506026

翻译一下:

使用方法: wrk <选项> <被测HTTP服务的URL>
  Options:
    -c, --connections <N>  跟服务器建立并保持的TCP连接数量
    -d, --duration    <T>  压测时间
    -t, --threads     <N>  使用多少个线程进行压测

    -s, --script      <S>  指定Lua脚本路径
    -H, --header      <H>  为每一个HTTP请求添加HTTP头      
        --latency          在压测结束后,打印延迟统计信息   
        --timeout     <T>  超时时间
    -v, --version          打印正在使用的wrk的详细版本信息

  <N>代表数字参数,支持国际单位 (1k, 1M, 1G)
  <T>代表时间参数,支持时间单位 (2s, 2m, 2h)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 测试报告

~$ wrk -c400 -d10s -t10 --latency https://www.baidu.com
Running 10s test @ https://www.baidu.com (压测10秒)
  10 threads and 400 connections (10 个线程, 400个连接)
                (平均)    (标准差)  (最大值) (正负一个标准差所占比例)
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    (延迟)
    Latency   117.18ms  160.26ms   1.81s    79.80%
    (每秒请求数)
    Req/Sec    36.15     22.10   121.00     64.94%
  Latency Distribution (延迟分布)
     50%   50.01ms
     75%   61.48ms
     90%  298.38ms
     99%  776.30ms
  2944 requests in 10.01s, 712.97KB read
  Socket errors: connect 159, read 0, write 0, timeout 3
Requests/sec:    293.98
Transfer/sec:     71.20KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18