性能压测工具: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的详细版本信息

代表数字参数,支持国际单位 (1k, 1M, 1G)

代表时间参数,支持时间单位 (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

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

相关推荐
ck0135791 小时前
视频添加水印的实践:文字叠加、透明 PNG 与时间区间设置
图像处理·测试工具·音视频·视频
EVE จุ๊บ1 天前
playwright和selenium的区别是什么
selenium·测试工具
Meta Luo3 天前
页面改版后自动化用例大量失败,应该怎么维护?
运维·功能测试·测试工具·自动化
释槐鸟~3 天前
还不知道RIDE工具怎么装吗
测试工具·自动化
有技巧搬砖4 天前
为什么锂电池组的电池老化测试很重要?
测试工具·锂电池·电池老化
蒲公英内测分发4 天前
智能手表卖出去后,包装、说明书和官网里的 App 下载入口怎么统一?
前端·人工智能·测试工具·智能家居·智能硬件·智能手表
蒲公英内测分发4 天前
智能手环出海测试,海外合作方分散在不同国家,Android 测试包怎么持续分发和更新?
android·前端·人工智能·测试工具·智能手表
无语的小歪歪4 天前
ATF 智测 1.0
python·测试工具·集成测试
SHENGWEI胜为5 天前
交换机端口显示正常,终端却获取不到 IP 地址?从 DHCP 流程定位故障
服务器·网络·测试工具·缓存·通信工程
xie881018025 天前
长表格跨页重复表头:排版上的做法
测试工具