一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如。
1.1 延迟
简单易懂。green:一般指响应时间
95线:P95。平均100%的请求中95%已经响应的时间
99线:P99。平均100%的请求中99%已经响应的时间
平均响应时间:所有请求的平均响应时间
最大响应时间:所有请求中最大的响应时间
1.2 吞吐量
简单易懂。green:即每秒处理的请求数量
对于查询搜索类的系统使用每秒处理的请求数(QPS)来衡量吞吐能力。
一般对于交易类的系统使用每秒处理的事务数(TPS)来衡量吞吐能力。
TPS:每秒处理的事务数(比如每秒处理的订单数)
QPS:每秒处理的请求数
1.3 系统容量
也叫做设计容量,可以理解为硬件配置(内存,cpu什么的),成本约束
wrk 是一款针对 Http 协议的基准测试开源工具,它能够在单机多核 CPU 的条件下,使用red:系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。
wrk 目前仅支持单机压测,后续也不太可能支持多机器对目标机压测。
因为它本身的定位,并不是用来取代 JMeter, LoadRunner 等专业的测试工具,wrk 提供的功能,对后端开发人员来说,应付日常接口性能验证还是比较友好的。
wrk 只能被安装在类 Unix 系统上,所以我们需要一个 Linux 或者 MacOS 环境。Windows 10 安装需要开启自带的 Ubuntu 子系统。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036
使用方法: wrk <选项> <被测HTTP服务的URL>
Options:
-c, --connections
-d, --duration
-t, --threads
-s, --script 指定Lua脚本路径
-H, --header
--latency 在压测结束后,打印延迟统计信息
--timeout
-v, --version 打印正在使用的wrk的详细版本信息
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
END今天的分享就到此结束了~!点赞关注不迷路