news 2026/8/21 4:37:18

性能压测工具: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/8/22 0:59:47

ARM64 指令 --- TST/CSEL

文章目录一、TST1.1 TST (immediate)1.2 TST (shifted register)二、CSEL2.1 简介2.2 CSEL的扩展指令2.2.1 CSINC2.2.2 CSINV2.2.3 CSNEG三、demo3.1 tst3.1.1 demo 13.1.2 demo 23.2 TST CSEL3.2.1 demo 13.2.2 demo 23.2.3 总结一、TST 1.1 TST (immediate) TST (immediat…

作者头像 李华
网站建设 2026/8/21 14:12:31

Java全栈开发工程师的面试实战:从基础到微服务

Java全栈开发工程师的面试实战&#xff1a;从基础到微服务 一、开场介绍 面试官&#xff1a;你好&#xff0c;我是今天的面试官&#xff0c;欢迎来到我们公司的技术面试。我看到你的简历上写着你有5年的Java全栈开发经验&#xff0c;主要集中在电商和内容社区方向。可以简单介绍…

作者头像 李华
网站建设 2026/8/21 19:52:31

虚拟网络环境及socket概述

虚拟网络环境及socket概述 文章目录虚拟网络环境及socket概述一、前言二、VMware虚拟机网络环境概述2.1 概述2.2 注意事项2.3 几种组网方式的区别2.4 Vmware和Windows的数据互通三、Socket简介3.1 什么是socket四、socket下的常用编程接口五、小结一、前言 今天&#xff0c;将带…

作者头像 李华
网站建设 2026/8/22 2:03:19

No module named ‘kaldi_native_fbank‘

No module named kaldi_native_fbank解决方法&#xff1a;pip install kaldi-native-fbankpython -c"import kaldi_native_fbank as knf"

作者头像 李华
网站建设 2026/8/20 1:26:52

A47双麦模组:全场景语音清晰革命

在智能对讲时被回音干扰&#xff0c;在车间通话时被机器噪音淹没&#xff0c;在远程教学时因杂音错过重点——这些语音传输的痛点&#xff0c;正在被A47双麦阵列回音消除及降噪模组&#xff08;V2.0&#xff09;彻底解决。作为一款聚焦“全场景语音优化”的高性能数字语音处理模…

作者头像 李华