wrk2入门-http性能压测工具总结

安利两个简单的http基准压测工具 wrk、 Apache bench 阅读详情

一、功能介绍:

  wrk2是一个主要基于wrk的HTTP基准测试工具,wrk2经过修改后能够提供稳定的吞吐量负载以及更精确的延时统计,即通过设置参数,wrk2增加了–rate或-R参数设置吞吐量(每秒总请求数)及–u_latency参数显示延时统计。

二、安装过程:

wrk安装过程非常简单,下载源码后在项目目录下执行make命令即可。

  1. git地址:

    https://github.com/giltene/wrk2

    # git clone https://github.com/giltene/wrk2.git 下载源码
    # cd wrk2  安装目录
    # make
    
  2. make编译过程中问题解决:

     1. -bash: make: command not found

    [root@XXX wrk2-master]# make
    -bash: make: command not found	
    

      系统无法使用make,make install,一般出现== -bash: make: command not found ==的提示,是因为安装系统的时候使用的是最小化安装,缺少make、vim等常用命令。
      直接安装make即可解决问题:

    [root@XXX wrk2-master]#yum -y install gcc automake autoconf libtool make
    

      安装g++:

    [root@XXX wrk2-master]#yum install gcc gcc-c++
    

    2. src/wrk.h:11:25: fatal error: openssl/ssl.h: No such file or directory
    问题描述
      问题在于:系统中缺少openssl库,安装即可

    [root@XXX wrk2-master]# yum install openssl-devel  或者
    [root@XXX wrk2-master]# yum install libssl-dev
    
  3. 创建软链接到指定目录
    [root@XXX wrk2-master]# ln -s /export/ccc/wrk2-master/wrk /usr/local/bin
    

      这一步必须进行设置,否则会出现报错,-bash: wrk: command not found

  4. 验证是否安装成功

      make完成后当前路径下会生成可执行文件wrk,表示可以使用wrk进行http压测了。 安装成功

三、wrk 初步使用

  1. 基本用法:

    Basic Usage: wrk <options> <url>

    Options:                                            
        -c, --connections <N>  Connections to keep open  # HTTP连接数,如1k,1M,1G,
        -d, --duration  <T>  Duration of test  # 测试持续时间,如 2s 2m 2h          
        -t, --threads <N>  Number of threads to use   # 开启的线程数 
                                                          
        -s, --script   <S>  Load Lua script file # 进阶功能,使用 lua 脚本
        -H, --header   <H>  Add header to request  # 添加请求头
       		 # 打印详细延迟统计
        -L  --latency    Print latency statistics   
        -U  --u_latency  Print uncorrceted latency statistics  
      		 ==# 设置请求超时时间,大于该时间的请求将被记录==
              --timeout     <T>  Socket/request timeout     
        -B, --batch_latency    Measure latency of whole   
                               batches of pipelined ops   
                               (as opposed to each op)    
        -v, --version          Print version details      
        -R, --rate        <T>  work rate (throughput)    #工作速率(吞吐量)即每个线程每秒钟完成的请求数
                               in requests/sec (total)    
                               [Required Parameter]
    
  2. 使用方法–readme
使用方法说明吞吐量/每秒总请求数
wrk -t2 -c100 -d30s -R2000 http://127.0.0.1:8080/index.html2个线程,100个连接,持续时间30s 每秒2000个请求Requests/sec: 2000.12
wrk -t2 -c100 -d30s -R2000 --latency url2个线程,100个连接,持续时间30s,每秒2000个请求延迟标识,延迟百分比
  1. 参数设定经验
    在这里插入图片描述

四 测试场景

  1. 测试HTTP协议网络的性能
    [root@XXX scripts]# wrk -t2 -c1000 -d15 -R1000 --latency https://www.baidu.com/
    
    Running 15s test @ https://www.baidu.com/    ------压测时间15s
      2 threads and 1000 connections                         -------共2个测试线程,1000个连接
      Thread calibration: mean lat.: 24.071ms, rate sampling interval: 41ms
      Thread calibration: mean lat.: 24.373ms, rate sampling interval: 40ms
      Thread Stats   Avg      Stdev     Max   +/- Stdev     -----平均值 标准差 最大值 正负一个标准差所占的比例
        Latency    13.10ms    5.09ms 124.16ms   95.55%  -----延迟
        Req/Sec   449.03    706.21     5.15k    94.26%        -----处理中的请求数
      Latency Distribution (HdrHistogram - Recorded Latency)   -----延迟分布
     50.000%   12.34ms
     75.000%   13.68ms
     90.000%   15.83ms                  -----90分位的延迟
     99.000%   21.14ms                   ----99分位的延迟
     99.900%  107.97ms
     99.990%  124.22ms
     99.999%  124.22ms              
    100.000%  124.22ms
    #[Mean    =       13.101, StdDeviation   =        5.093]
    #[Max     =      124.160, Total count    =         2201]
    #[Buckets =           27, SubBuckets     =         2048]
    ----------------------------------------------------------
      13795 requests in 15.00s, 206.31MB read   ----15s内共处理完成了13795个请求,读取了206.31MB数据
    Requests/sec:    919.62                                     -----平均每秒处理完成919.62个请求
    Transfer/sec:     13.75MB                                   -----平均每秒读取数据13.75MB 
    

      压测简单说明:以上使用了2个线程1000个http连接,对baidu进行了15s的压测,并要求在压测结果中输出响应延迟信息。

  2. 测试当前服务的最大QPS

      进入安装目录,运行

通过-R参数获取吞吐量参数每秒请求量的结果
./wrk2 -t10 -c50 -d30 -R3000 -H “Host:xxx.com” http://localhost/a/a.mp4 -LRequests/sec: 3000.12
./wrk2 -t10 -c50 -d30 -R5000 -H “Host:xxx.com” http://localhost/a/a.mp4 -LRequests/sec: 5000.12
./wrk2 -t10 -c50 -d30 -R10000 -H “Host:xxx.com” http://localhost/a/a.mp4 -LRequests/sec: 9800.12
./wrk2 -t10 -c50 -d30 -R20000 -H “Host:xxx.com” http://localhost/a/a.mp4 -LRequests/sec: 12500.12
./wrk2 -t10 -c50 -d30 -R30000 -H “Host:xxx.com” http://localhost/a/a.mp4 -LRequests/sec: 13000.12

从以上的测试过程中可以看出,服务最大的每秒请求量为13000,可见性能压测的QPS为1.3万左右,考虑本机测试性能损耗问题,即QPS>1.2万。

  1. 使用Lua脚本个性化wrk压测

  以上是介绍wrk的安装及简单的使用,可以看出wrk的使用较简单方便,且测试结果清晰,一般情况下关注的指标主要是:90分位延迟、99分位延迟及Requests/sec。但是工作上往往需要较复杂的测试场景,这种简单的压测可能就不满足需求。比如,使用POST 方法跟服务器交互;每次请求使用不同的参数;为了更好的模拟服务场景,需要使用wrk的script lua脚本来定制压测过程,即满足定制化的需求。
  有关wrk高级使用方法,可以查看我的另一篇博客:wrk2的高级使用方法

4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2 上一篇文章我们了解了bombardier,并知道了bombardier.yml与开源项目bombardier的关系,接下来的文章我们了解一下wrk、wrk2,并对比一下它们与bombardier的关系 阅读详情

相关推荐

【wrk2】轻量级性能测试工具

wrk/wrk2是针对http协议的基准测试工具,特点是在单击多核CPU的前提下,通过系统自带的高性能I/O机制【epoll、kqueue等】,以多线程和事件模式,在指定的时间和请求范围下对目标机器产生负载。1、安装简单、容易上手2、基于系统自身的高性能机制,单机产生大量请求3、轻量级测试工具,学习成本低1、只能进行单击压测、不支持分布式;无法取代jmater、loadrunner等专业工具2、只支持http协议,请求体中带参数的请求比如POST,需要写Lua脚本。

每天进步一点点 1732

wrk&wrk2

性能测试

u014220762的博客 1428

wrk2:恒定吞吐量,正确的wrk延迟记录变体

wrk2 一个主要基于wrk的HTTP基准测试工具 对wrk2进行了修改,以产生恒定的吞吐量负载,并精确到9s的延迟细节(即,运行足够长的时间可以产生准确的99.9999%'ile)。 除wrk的参数外,wrk2通过--rate或-R参数(默认值为1000)接受吞吐量参数(每秒总请求数)。 重要提示:在进一步介绍之前,我想说明一下,这项工作绝不是要对威尔·格罗泽(Will Glozer)在wrk上所做的伟大工作进行攻击或贬低。 我喜欢他的代码,我衷心希望可以将我所做的某些更改考虑为包含在wrk中。 正如可能熟悉我与延迟相关的演讲和言论的人一样,我专注于wrk2修复的延迟测量问题在负载生成器和监视代码中极为常见。 我不认为重复创作的人缺乏技能或智慧。 我曾经(最近在2-3年前)与世界其他地区一样,对协调遗漏的影响一无所知。 wrk2用HdrHistograms替换了wrk的单个请求样本

giltene/wrk2 性能测试工具中的Lua脚本开发指南

wrk2是一个高性能的HTTP基准测试工具,它通过LuaJIT脚本提供了强大的自定义能力。本文将深入解析wrk2中的脚本系统,帮助开发者充分利用这一特性来构建复杂的性能测试场景。 ## 脚本执行阶段概述 wrk2的Lua脚本执行分为三个关键阶段: 1. **Setup阶段**:线程初始化时执行,用于线程级配置 2. **Running阶段**:实际测试运行时执行,处理每个请求周期 3. **...

gitblog_00109的博客 668

docker_wrk2:使用WRK HTTP基准测试工具将Docker定义为小型Docker映像

docker_wrk2(juniormichieletto / docker_wrk2) 使用wrk HTTP基准测试工具将Docker定义为小型Docker映像。 小于9mb的未压缩图像。 样品用法 docker run --rm juniormichieletto/docker_wrk2 -t10 -c100 -d10s -R300 https://www.google.com/ 请注意,我们不需要输入“ wrk”类型,因为它在dockerImage入口点中。 简单的命令说明 docker run < docker> juniormichieletto/docker_wrk2 < wrk> “ docker run”:运行某些容器的命令 “ --rm”:运行选项以在完成基准测试后删除容器 “ juniormichiele

【Unity人物动画】SALSA With RandomEyes (语音生成嘴型/人物说话) 使用

SALSA使用探索 之前做项目时想做人物说话的嘴部动作,因为我们的语音是AI合成的,语音片段很多,如果能根据语音生成嘴部动画,那将极大便利我们的工作。后面是找到了SALSA的这款插件,并摸索出使用方法。 1 插件介绍 官方网站:https://crazyminnowstudio.com/ 一个能做2D纸片人和3D人物模型嘴部和眼睛动画的插件,由两人组成的独立工作室(疯狂米诺工作室)开发。 插件全名为SALSA With RandomEyes,2014年上架Asset Store,目前是已下架,替换为新版本

里约热内驴的博客 1万+

Web服务压测神器wrk

wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学习这个工具的时候我还拿它压测了我们的个人网站xindoo.me,发现mysql性能不行后加了wp-cache,通过cache把我网站的承载能力提升了10多倍。但...

xindoo 6288

Flash芯片的VCC上电到可操作时间过长

Flash的VCC上电到操作时间(tVSL)通常有最大值限制,如果超过这个时间,核心风险是状态机不同步和指令锁存错误。比如芯片内部振荡器可能已经尝试启动又休眠了,但主控却在这之后才发送指令,导致完全 misinterpreted。Flash芯片的(从电源上电到可以正常进行读写操作的时间)如果过长,会产生一系列负面影响简单来说,这个时间过长意味着电源上升速度太慢,违反了芯片的要求。

qq_61918649的博客 723

HTTP性能压测工具wrk应用实战

背景:wrk 是当今最流行的压测工具,用于模拟高并发情况下的 HTTP 请求。wrk 使用 Lua 作为脚本语言,可以通过编写 Lua 脚本来自定义请求的参数和逻辑。它支持多线程并发,并提供了丰富的统计信息和报告,可以帮助你评估服务器的性能和承受能力。安装 wrk(需要在 linux 系统上)命令行输入一下命令下载 wrk 源码随后进入 wrk 目录并进行编译。

qq_48811377的博客 1103

【无标题】

可以看到这是一个带过滤的rce,并且还需要绕过空格,通过·查询资料得到了${IFS},$IFS$9,<,$IFS。然后f,l,a,g都被过滤了,可以用中括号[]来进行正则匹配,把GET传的参数改为?cmd=uniq /[e-h][k-n][^-b][e-h],就得到了flag。cmd={%0A"cmd":"/bin/cat /home/rceservice/flag"%0A}可以看到l被过滤了ls用不了了可以用dir用GET传参cmd=dir /,POST传参shell=system。

2501_94507425的博客 305

深入理解C语言内存管理:堆与栈的区别

栈是一种遵循后进先出(LIFO)原则的数据结构。在程序中,栈用于存储局部变量、函数的参数以及函数调用时的返回地址等信息。栈的内存管理由操作系统自动进行,每次函数调用时都会在栈上分配一块内存区域,函数执行完毕后,该内存区域会自动释放。在C语言中,堆与栈是两种不同的内存分配方式,各自有着不同的特点和适用场景。栈内存自动管理,访问速度快,但大小有限,适用于存储局部变量和函数调用信息。堆内存由程序员手动管理,适用于存储动态数据结构,大小不受限制,但访问速度较慢,容易导致内存泄漏等问题。

set_one的博客 1582

性能压测工具 —— wrk

1.1 延迟简单易懂。green:一般指响应时间95线:P95。平均100%的请求中95%已经响应的时间99线:P99。平均100%的请求中99%已经响应的时间平均响应时间:所有请求的平均响应时间最大响应时间:所有请求中最大的响应时间1.2 吞吐量简单易懂。green:即每秒处理的请求数量对于查询搜索类的系统使用每秒处理的请求数(QPS)来衡量吞吐能力。一般对于交易类的系统使用每秒处理的事务数(TPS)来衡量吞吐能力。TPS:每秒处理的事务数(比如每秒处理的订单数)QPS:每秒处理的请求数。

weixin_71807218的博客 1393

YOLOv8 眼底病变检测(眼底照片)详细说明

本文介绍了基于YOLOv8的眼底病变自动检测系统。该系统可识别糖尿病视网膜病变、青光眼等5类常见眼底病变,包括微动脉瘤、出血点等特征。核心技术包含图像预处理、模型训练、病变检测与量化分析三个模块,采用1024×1024高分辨率输入,针对医学图像特点优化数据增强策略。系统支持批量处理、可视化标注和临床报告生成,提供病变数量、面积密度和严重程度评分等量化指标。特别强调医学合规性要求,需专业医生参与数据标注和模型验证,符合医疗器械认证标准。该系统可作为眼科医生的辅助诊断工具,提高眼底病变筛查效率。

u010117029的博客 133

Wrk压测工具详解

Wrk压测工具安装使用 官方源码:https://github.com/wg/wrk 安装步骤: wrk只支持linux环境不支持windows环境, 安装git,并配置git环境变量, 克隆源码git clone https://github.com/wg/wrk 进入到源码的路径下执行make进行编译 然后会在当前路径下生成一个可执行文件wrk 如果想全局都可以执行,将wrk文件加入到环境变...

不是很懂 2万+

18、深入解析航空飞行数据中的秘密:从数据清理到高级分析

本文详细解析了如何使用R语言处理和分析航空飞行数据,从基础的数据清理到复杂的回归分析和机器学习模型构建。文章涵盖了探索性数据分析、天气数据的整合、地理信息可视化、时间序列预测以及航班延误的优化策略等内容,展示了如何通过数据挖掘技术提高航空运营效率和乘客满意度,并探讨了数据质量评估与隐私保护的重要性。

convnet3designer的博客 107

【图像去噪】论文精读:AKDT: Adaptive Kernel Dilation Transformer for Effective Image Denoising

论文题目:AKDT: Adaptive Kernel Dilation Transformer for Effective Image Denoising —— AKDT:用于有效图像去噪的自适应核膨胀Transformer图像去噪是一项基本但具有挑战性的任务,特别是在处理高分辨率图像和复杂的噪声模式时。大多数现有方法依赖于标准的 Transformer 架构,该架构通常计算复杂度高,并且对不同噪声水平的适应性有限。在本文中,我们介绍了自适应核膨胀Transformer(AKDT)

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1047

性能压测工具:wrk

简单易懂。green:一般指响应时间95线:P95。平均100%的请求中95%已经响应的时间99线:P99。平均100%的请求中99%已经响应的时间平均响应时间:所有请求的平均响应时间最大响应时间:所有请求中最大的响应时间。

yjt2045263063的博客 1039

使用NXP SBC插件开发FS26软件

FS26作为功能安全可达ASIL D的SBC,在配合NXP MCU的使用中非常广泛,本文介绍基于NXP官网的SBC代码包快速进行FS26软件的开发FS26使用过程中还有不少坑的地方,后面有空可以再介绍相关的功能。

赞的博客 651

wrk压测工具

简介 wrk 是一款针对 http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。即wrk能够开启多个连接访问接口,看接口最多每秒可以承受多少连接。 优势: 轻量级性能测试工具 安装简单 学习曲线基本为0,几分钟就学会使用了 基于系统自带的高性能I/O机制,如epoll,kqueue,利用异步的事件驱动框架,通过很少的线程就可以压出很大的并发量,例如几万、几十万,这是

fang.lovest.yang的博客 3186

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 磁盘快速写入大文件方法
下一篇: 查看log日志的常用方法总结
QA的自我修养
博客等级 码龄8年 1710粉丝 42原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值