首页 > 其他分享 >性能压测工具 —— wrk

性能压测工具 —— wrk

时间:2024-03-15 16:11:49浏览次数:23  
标签:请求 压测 性能 wrk -- 每秒 软件测试

一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如。

1、性能指标简介

1.1 延迟

简单易懂。green:一般指响应时间

95线:P95。平均100%的请求中95%已经响应的时间

99线:P99。平均100%的请求中99%已经响应的时间

平均响应时间:所有请求的平均响应时间

最大响应时间:所有请求中最大的响应时间

 

1.2 吞吐量

简单易懂。green:即每秒处理的请求数量

对于查询搜索类的系统使用每秒处理的请求数(QPS)来衡量吞吐能力。

一般对于交易类的系统使用每秒处理的事务数(TPS)来衡量吞吐能力。

TPS:每秒处理的事务数(比如每秒处理的订单数)

QPS:每秒处理的请求数

 

1.3 系统容量

也叫做设计容量,可以理解为硬件配置(内存,cpu什么的),成本约束

2、压测工具 wrk

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

wrk 目前仅支持单机压测,后续也不太可能支持多机器对目标机压测。

因为它本身的定位,并不是用来取代 JMeter, LoadRunner 等专业的测试工具,wrk 提供的功能,对后端开发人员来说,应付日常接口性能验证还是比较友好的。

wrk 只能被安装在类 Unix 系统上,所以我们需要一个 Linux 或者 MacOS 环境。Windows 10 安装需要开启自带的 Ubuntu 子系统。

3、使用 wrk

使用方法: 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)

 

3.1 命令简单的压测

简单进行一次压测,用10个线程,200个连接,对百度进行30s的压测。

以下是对压测结果  

wrk -t 10 -c 200 -d 30s --latency http://www.baidu.com



# 30s内测试百度的结果如下:

Running 30s test @ http://www.baidu.comm/



# 用12个线程 400个连接测试

12 threads and 400 connections



  Latency Distribution

  # 响应时间-延迟分布明细

  # 有50%的请求执行时间是在64.42ms内完成

  50% 64.42ms

  

  # 30秒内功处理了 149798 个请求,

  读取了 241.85MB 的数据

  149798 requests in 30.09s, 241.85MB read



 # QPS 4977.65, 即平均每秒处理请求数为4977.65 

 可以参考吞吐量。

 Requests/sec: 4977.65



# 平均每秒读取 8.04M 的数据

Transfer/sec: 8.04MB

3.2 编写压测脚本

首先需要准备一个 lua 文件,比如名为 test-postapi.lua ,写入如下内容。

### 请求方式

wrk.method = "POST"



### 设置 请求类型

wrk.headers["Content-Type"] = "application/json"



### POST 请求参数

wrk.body = '{"username": "13999999999","username": "13999999999"}'

这个文件内容自己写,写好接口内容后保存。

 

3.3 执行脚本

以下是模拟6个线程,600个连接,在60s内,间隔6s 执行 test-postapi.lua 脚本的请求。

# 进入wrk执行文件目录

# --script 参数的值为脚本名

# --latency 参数的值为接口地址

./wrk -t6 -c600 -d60s --script=test-postapi.lua --latency http://api.xxxdev.com/enterprise/user/login

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

如果你想学习软件测试和需要软件测试资料,欢迎加入扣扣交流群:731789136,里面可以免费领取软件测试+自动化测试资料+软件测试面试宝典+简历模版+实战项目+面试刷题工具和大佬答疑解惑,我们一起交流一起学习!

标签:请求,压测,性能,wrk,--,每秒,软件测试
From: https://www.cnblogs.com/NHB6870/p/18075655

相关文章

  • 性能测试 —— 什么是全链路压测?
    随着互联网技术的发展和普及,越来越多的互联网公司开始重视性能压测,并将其纳入软件开发和测试的流程中。阿里巴巴在2014年双11大促活动保障背景下提出了全链路压测技术,能更好的保障系统可用性和稳定性。什么是全链路压测全链路压测是一种全面测试系统的方法,通过模拟真实用户......
  • 性能逆天的三端电容器-谈历代iphone电容器的变迁史
    早期苹果手机的硬件设计在业界享有很高的声誉,技术领先,主要体现在以下方面:整合性设计:苹果采用垂直整合的设计理念,掌控硬件和软件的整个生态系统。这种一体化设计使得硬件和软件之间更好地协同工作,提供更流畅、高效的用户体验。高质量的材料和制造工艺:苹果注重采用高质量的材......
  • 拯救php性能的神器webman-使用后台webman-admin
    在webman的插件市场里面发现了这个webman-admin安装的话很简单,就是在已经安装了webman的目录里面执行  composerrequire-Wwebman/admin 安装过程提示这些Usingversion^0.6.24forwebman/admin./composer.jsonhasbeenupdatedRunningcomposerupdatewebman/......
  • golang 随机数组的性能对比测试
    最近需要用到随机数,但在随机数的生成方面遇到些问题,如加了seed后反而生成的数组是固定的,没有加是随机的,后面查资料了解到,如果seed值是一样的,序列中的值就固定的,而不加seed时,每次的都是随机的,后面想到如果用来做负载均衡呢,性能又如何。下面是源码:packagebenchimport( ......
  • 性能数据Grafana数据面板实战
    一、安装Grafanahttps://grafana.com/zh-cn/grafana/?pg=graf&plcmt=hero-btn-1二、修改配置默认为3000,若被占用,就修改默认启用端口修改为中文界面3、启用服务或者在控制面板-服务中启动四、访问服务......
  • LoggerMessageAttribute 高性能的日志记录
    .NET6引入了LoggerMessageAttribute类型。使用时,它会以source-generators的方式生成高性能的日志记录API。source-generators可在编译代码时,可以提供其他源代码作为编译的输入。LoggerMessageAttribute依赖于ILogger接口和LoggerMessage.Define功能。在partial日......
  • 项目性能优化—性能优化的指标、目标
    项目性能优化—性能优化的指标、目标性能优化的终极目标是什么性能优化的目标实际上是为了更好的用户体验:一般我们认为用户体验是下面的公式:用户体验=产品设计(非技术)+系统性能≈系统性能=快那什么样的体验叫快呢?3秒定理一般我们认为网站页面的加载速度在3秒以内就可......
  • 电气材料结构与性能(二)
    本篇为西安交通大学本科课程《电气材料基础》的笔记。本篇为这一单元的第二篇笔记,上一篇传送门。电气材料的导电性能带的形成能级的分裂根据量子力学,原子的能级是量子化的,能带的形成从能级的分裂而来。下面以氢分子H2的形成来说明这一过程。当两个氢原子相靠近而形成......
  • PostgreSQL与openGauss之分区性能
    PostgreSQL与openGauss之分区性能概述PostgreSQL与openGauss分区表定义差异,请参考https://www.modb.pro/db/41393。openGauss1.1.0开始支持hash/list分区,hash分区表最多支持64个分区,否则会报:ERROR:Un-supportfeatureDETAIL:Thepartition’slengthshouldbe......
  • 潜水耳机哪个牌子好?潜水党必看的游泳耳机专业性能详解!
    在游泳、潜水等水上活动中,一个好的耳机可以让你更加享受水中的乐趣。而随着科技的不断发展,市面上涌现了越来越多的游泳耳机品牌和型号,让人眼花缭乱。(以下是之前测试过的游泳耳机:)那么,潜水耳机哪个牌子好呢?本文将为大家详细讲解一些专业的购物指南,帮助大家选择适合自己的潜水......