性能压测工具: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 connectionsLatency 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
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:
性能压测工具:wrk
一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如。 1、性能指标简介 1.1 延迟 简单易懂。green:一般指响应时间 95线:P95。平均100%的请求中95%已经响应的时间 99线:P99。平均100%的请求中99%已经响应的时间 平…...
[Matlab有限元分析] 2.杆单元有限元分析
1. 一维杆单元有限元分析程序 一维刚单元的局部坐标系(单元坐标系)与全局坐标系相同。 1.1 线性杆单元 如图所示是一个杆单元,由两个节点i和j,局部坐标系的X轴沿着杆的方向,由i节点指向j节点,每个节点有…...
透过对话聊天聊网络tcp三次握手四次挥手
序 说起来网络,就让我想起的就是一张图。我在网上可以为所欲为,反正你又不能顺着网线来打我。接下来我们来详细说一下网络到底是怎么连接的。 TCP三次打招呼 首先我会用男女生之间的聊天方式,来举一个例子。 从tcp三次握手来说,…...
项目管理套路:看这一篇绝对够用❤️
写论文必不可少的,就是创建代码并进行实验。好的项目管理可以让实验进行得更加顺利。本篇博客以一次项目实践为例,介绍项目管理的方法,以及可能遇到的问题,并提供一些可行的解决方案。 目录 项目管理工具开始第一步版本管理十分关…...
华为-算法---测试开发工程师----摘要牛客网
Java面试题---摘要牛客网-CSDN博客package extendNiuKeWang;import java.util.Scanner;public class GoodHuaWei {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int money = sc.nextInt();System.out.println("n值总金额:"+money)…...
python环境搭建-yolo代码跑通-呕心沥血制作(告别报错no module named torch)
安装软件 安装过的可以查看有没有添加环境变量 好的! 我们发车! 如果你想方便快捷的跑通大型项目,那么必须安装以下两个软件: 1.pycharm2.anaconda对应作用: pycharm:专门用来跑通python项目的软件,相当于一个编辑器,可以debug调试,可以接受远程链接调试!anaconda:专…...
Cisco Packet Tracer配置命令——路由器篇
路由基础 路由器用于互联两个或多个网络,具有两项功能:为要转发的数据包选择最佳路径以及将数据包交换到正确的端口,概括为路由选择和分组转发。 路由选择 路由选择就是路由器根据目的IP地址的网络地址部分,通过路由选择算法确…...
setContentsMargins(QMargins()) 是 QWidget 类的成员函数,用于设置小部件的内容边距(Contents Margins)
setContentsMargins(QMargins()) 是 QWidget 类的成员函数,用于设置小部件的内容边距(Contents Margins)。 在 Qt 中,内容边距指的是小部件内部内容与小部件边界之间的空白区域。通过设置内容边距,可以控制和调整小部…...
Redis key 过期监听实现
1.技术背景,想知道 redis 设置了TTL时间的key 过期,且有后续的业务处理的场景可以使用。 bug点: 使用redis 缓存失效监听会有一定的延迟, 过期事件是在redis服务器删除键的时候生成的,而不是在理论上生存时间到达0值得…...
Gee教程2.上下文Context
先来看看Gin框架的简单例子 func main() {engine : gin.Default()engine.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "hello World!")})//监听并启动服务,默认 http://localhost:8080/engine.Run() }//我们自己写的 func main()…...
【从浅识到熟知Linux】基本指定之cat、more和less
🎈归属专栏:从浅学到熟知Linux 🚗个人主页:Jammingpro 🐟每日一句:写完这篇我要去吃晚饭啦!! 文章前言:本文介绍cat、more和less指令三种查看文件的用法并给出示例和截图…...
2018年7月24日 Go生态洞察:Go Cloud实现便携式云编程
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
storyBook常见踩坑报错 和 解决
用StoryBook官网的代码,但报错,Unexpected token’<’ 在js文件中// Button.stories.js|jsx import { Button } from ‘./Button’; export default { component: Button, }; /* *👇 Render functions are a framework specific featur…...
python 笔记 根据用户轨迹+基站位置,估计基站轨迹+RSRP
1 问题描述 已知用户实际的轨迹,和基站的位置,能不能得到用户所连接的基站,以及基站的信号强度RSRP? 1.1 几个假设 这里我们做几个假设: 每个用户有80%的概率连接最近的基站,有20%的概率选择其他的基站连…...
RocketMQ 安装部署及应用场景记录
文章目录 前言一、RocketMQ简介1.1 整体架构 二、RocketMQ安装部署2.1 RocketMQ 下载2.2 修改 JVM 参数2.3 启动 NameServer 和 Broker2.4 验证发送和接受消息2.5 停止 NameServer 和 Broker2.6 配置全局环境 三、RocketMQ应用场景3.1 异步处理3.2 应用解耦3.3 流量削峰 前言 …...
人工智能面面观
人工智能简介 人工智能(Artificial Intelligence,简称AI)是一门研究如何使计算机能够模拟和执行人类智能任务的科学和技术领域。它致力于开发能够感知、理解、学习、推理、决策和与人类进行交互的智能系统。人工智能的背景可以追溯到上世纪50…...
vue-router的使用技巧
一、安装 npm install vue-router 二、引入 main.ts引入 import { createApp } from vue import App from ./App.vue import router from ./routerconst app createApp(App)app.use(router) app.mount(#app)三、定义路由文件 路由的参数 meta添加路由的其他参数 redire…...
CV计算机视觉每日开源代码Paper with code速览-2023.11.21
点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构:Transformer】Multi-entity Video Transformers for Fine-Grained Video Representation Learning 论文地址&…...
人工智能对当代生活的影响
人工智能(AI)是指通过模拟人类智能的方式,使机器能够执行某些需要智能的任务。随着技术的快速发展和应用的广泛推广,人工智能已经深入到我们的日常生活中,对我们的生活和社会产生了深远的影响。本文将探讨人工智能对当…...
笔记:如何搭建一套前端监控系统?(持续更新中)
数据敏感处理 数据加密,对涉及用户隐私的数据做到加密防护 独立部署,不和其它应用共享监控系统 不采集具体数据,只采集用户操作数据 错误采集 Runtime Error: JS运行错误,可通过error监听器捕获 load Error: 资源加载错误&#x…...
AI开发-python-langchain框架(--并行流程 )耪
如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...
Qwen-Image-2512-Pixel-Art-LoRA 提示词工程进阶:掌握控制像素艺术风格与细节的秘诀
Qwen-Image-2512-Pixel-Art-LoRA 提示词工程进阶:掌握控制像素艺术风格与细节的秘诀 你是不是也遇到过这样的情况:用像素艺术模型生成图片,出来的效果要么像素块太大太粗糙,要么颜色花里胡哨不像复古游戏,要么就是画面…...
LeetCode 删除无效的括号:python 题解臼
这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...
Pixel Couplet Gen 运维指南:模型服务监控与高可用保障
Pixel Couplet Gen 运维指南:模型服务监控与高可用保障 1. 引言:AI对联生成服务的运维挑战 春节将至,各大平台的AI对联生成服务即将迎来流量高峰。作为运维工程师,我们去年就经历过一次惊心动魄的体验——除夕当晚服务流量激增1…...
Langchain Agent实战避坑:用通义千问调用高德API,我踩过的异步和工具定义那些坑
Langchain Agent实战避坑指南:异步调用与工具定义的那些坑 在构建基于Langchain的智能代理时,异步调用和工具定义是两个最容易让开发者踩坑的领域。本文将分享我在使用通义千问模型调用高德API过程中遇到的实际问题及其解决方案。 1. 异步调用的常见陷阱…...
YOLOv8实战:用Grad-CAM可视化模型注意力区域(附完整代码)
YOLOv8实战:用Grad-CAM可视化模型注意力区域(附完整代码) 在计算机视觉领域,理解模型如何"看待"图像正变得越来越重要。想象一下,当你的目标检测模型将一只猫误判为狗时,如果能直观看到模型关注了…...
笔试训练48天:过河卒
[NOIP2002 普及组] 过河卒_牛客题霸_牛客网https://www.nowcoder.com/practice/cc1a9bc523a24716a117b438a1dc5706?tpId230&tqId40428&ru/exam/oj知识点动态规划 描述 棋盘上 A点有一个过河卒,需要走到目标 B点。卒行走的规则:可以向下、或者…...
终极指南:如何快速配置Pushy实现Java APNs推送服务
终极指南:如何快速配置Pushy实现Java APNs推送服务 【免费下载链接】pushy A Java library for sending APNs (iOS/macOS/Safari) push notifications 项目地址: https://gitcode.com/gh_mirrors/pu/pushy Pushy是一个功能强大的Java库,专为发送A…...
口碑好的不锈钢彩涂板服务商
最近跟一个做钢结构厂房的老哥聊天,他跟我大倒苦水,说去年一个项目用的彩涂板,还没到一年,沿海的盐雾一吹,表面就开始起泡、褪色,甲方天天追着屁股后面要求返工,赔钱不说,信誉都快赔…...
w64devkit:Windows平台C/C++开发的终极便携工具包指南
w64devkit:Windows平台C/C开发的终极便携工具包指南 【免费下载链接】w64devkit Portable C and C Development Kit for x64 (and x86) Windows 项目地址: https://gitcode.com/gh_mirrors/w6/w64devkit 你是否厌倦了在Windows上进行C/C开发时需要安装复杂的…...

