news 2026/6/9 15:38:38

性能压测工具:wrk

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
性能压测工具: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

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 1:11:23

论文生成慢半拍?十大AI工具,AIGC降重+快速出初稿

论文生成慢半拍&#xff1f;十大AI工具&#xff0c;AIGC降重快速出初稿&#xfffd;&#xfffd; AI工具性能速览表工具名称核心功能处理时间AI生成率控制适配检测平台askpaper降AIGC率降重同步20分钟个位数知网/格子达/维普秒篇AI痕迹深度弱化20分钟个位数知网/格子达/维普aic…

作者头像 李华
网站建设 2026/6/9 1:56:46

研究生论文写作工具推荐:10大平台+开题排名

研究生论文写作工具推荐&#xff1a;10大平台开题排名 核心工具对比速览 工具名称 核心优势 处理时间 适用场景 特色功能 aibiye 精准适配知网/维普规则 20分钟 学位论文降重 AIGC查重降重一体化 aicheck AI痕迹深度消除 15-30分钟 期刊投稿 学术术语保护机制 …

作者头像 李华
网站建设 2026/6/2 1:02:12

卡在学历的开发者困境,一个 Vue 开发者的60天求职之路【一】

今天是失业的第60天。过去一个月&#xff0c;我投出90多份简历&#xff0c;主动联系450位招聘方&#xff0c;收到了10次面试机会&#xff0c;全部认真完成面试。 理想很丰满&#xff0c;现实很骨感&#xff0c;结果却如出一辙&#xff1a;有的止步于背调环节——技术面顺利通过…

作者头像 李华
网站建设 2026/6/6 10:54:55

QNetworkReply-QNetworkAccessManager-put-内存申请注意事项

展示 reply manager->put(request, ftpsendfile);简介 在Qt C中执行manager->put(request, ftpsendfile)时&#xff0c;内存管理涉及多个层面&#xff0c;需结合Qt对象模型、网络模块特性及C内存管理规则分析。以下从内存申请点和回收策略两方面详细说明&#xff1a; 内…

作者头像 李华
网站建设 2026/6/5 16:54:49

威斯康星大学麦迪逊分校课程数据集成数据集:193个学科领域超9千门课程的全面教学信息资源

威斯康星大学麦迪逊分校课程数据集成数据集&#xff1a;193个学科领域超9千门课程的全面教学信息资源 引言与背景 威斯康星大学麦迪逊分校课程数据集成数据集是一个综合性、权威性的高等教育教学资源库&#xff0c;完整记录了该校丰富的课程体系、精细的教学安排以及全面的学术…

作者头像 李华