2.负载测试

article/2025/9/12 14:26:39

负载测试

负载测试主要关注在并发用户数或每秒请求数方面评估系统的当前性能。

什么是负载测试

负载测试是一种性能测试,用于确定系统在正常和峰值条件下的行为。

负载测试用于确保当许多用户同时访问应用程序时,应用程序的性能令人满意。

您应该运行负载测试以:

  1. 评估系统在典型负载和峰值负载下的当前性能。

  2. 确保在对系统(代码和基础架构)进行更改时不断满足性能标准。

您可能对系统的平均流量和高峰时段的流量有所了解。在决定您的性能目标应该是什么时,此信息将非常有用,换言之,如何配置性能阈值。

假设您看到平均大约 60 个并发用户和 100 个用户在操作高峰时段。
在正常时间和高峰时间满足性能目标对您来说可能很重要,因此建议在配置负载测试时考虑到高负载 - 在这种情况下为 100 个用户。

k6 中的负载测试

请注意,此测试有一个简单的阈值。99% 请求的响应时间必须低于 1.5 秒。阈值是确保您的系统达到您为其设置的性能目标的一种方式。

sample-load-test.js

import http from 'k6/http';
import { check, group, sleep } from 'k6';export let options = {stages: [{ duration: '5m', target: 100 }, // 模拟流量在 5 分钟内从 1 个用户增加到 100 个用户。{ duration: '10m', target: 100 }, // 保持 100 个用户 10 分钟{ duration: '5m', target: 0 }, // 减少到 0 个用户],thresholds: {http_req_duration: ['p(99)<1500'], // 99% 的请求必须在 1.5 秒内完成'logged in successfully': ['p(99)<1500'], // 99% 的请求必须在 1.5 秒内完成},
};const BASE_URL = 'https://test-api.k6.io';
const USERNAME = 'TestUser';
const PASSWORD = 'SuperCroc2020';export default () => {let loginRes = http.post(`${BASE_URL}/auth/token/login/`, {username: USERNAME,password: PASSWORD,});check(loginRes, {'logged in successfully': (resp) => resp.json('access') !== '',});let authHeaders = {headers: {Authorization: `Bearer ${loginRes.json('access')}`,},};let myObjects = http.get(`${BASE_URL}/my/crocodiles/`, authHeaders).json();check(myObjects, { 'retrieved crocodiles': (obj) => obj.length > 0 });sleep(1);
};

典型负载测试的 VU 图表与此类似

在这里插入图片描述

请注意,用户数从 0 开始,然后缓慢上升到标称值,并在此停留很长时间。斜坡下降阶段是可选的。

我们建议您始终在所有负载测试中包含一个加速阶段,因为:

  • 它允许您的系统预热或自动缩放以处理流量
  • 它允许您比较低负载和额定负载阶段之间的响应时间。
  • 如果您使用 SaaS 云服务运行负载测试,它允许自动性能警报更好地了解您系统的正常行为。

负载测试 – 模拟正常的一天

您还可以更进一步,将负载测试配置为更接近您的正常和峰值条件。在这种情况下,您可以将负载测试配置为在一天中的大部分时间保持 60 名用户,并在操作高峰时段增加到 100 名用户,然后再减少到正常负载。

确保您没有超过正常数量的 VU - 这不是负载测试,而是压力测试

ramp-up-scenario.js

import http from 'k6/http';
import { check, group, sleep } from 'k6';export let options = {stages: [{ duration: '5m', target: 60 }, // 模拟 5 分钟内从 1 到 60 个用户的流量增加。{ duration: '10m', target: 60 }, // 保持 60 个用户 10 分钟{ duration: '3m', target: 100 }, // 在 3 分钟内增加到 100 个用户(高峰时段开始){ duration: '2m', target: 100 }, // 在短时间内(高峰时段)停留在 100 个用户{ duration: '3m', target: 60 }, // 在 3 分钟内减少到 60 个用户(高峰时段结束){ duration: '10m', target: 60 }, // 以 60 用户继续 10 分钟{ duration: '5m', target: 0 }, // 减少到 0 个用户],thresholds: {http_req_duration: ['p(99)<1500'], // 99% 的请求必须在 1.5 秒内完成},
};const BASE_URL = 'https://test-api.k6.io';
const USERNAME = 'TestUser';
const PASSWORD = 'SuperCroc2020';export default () => {let loginRes = http.post(`${BASE_URL}/auth/token/login/`, {username: USERNAME,password: PASSWORD,});check(loginRes, {'logged in successfully': (resp) => resp.json('access') !== '',});let authHeaders = {headers: {Authorization: `Bearer ${loginRes.json('access')}`,},};let myObjects = http.get(`${BASE_URL}/my/crocodiles/`, authHeaders).json();check(myObjects, { 'retrieved crocodiles': (obj) => obj.length > 0 });sleep(1);
};

在这里插入图片描述

k6 在模拟斜坡上升/斜坡下降场景方面非常灵活。

关于性能阈值的说明
每当您进行负载测试时,您都会有一些期望。

典型的期望是:

  • 99% 的请求应在 5 秒内完成。
  • 95% 的请求应在 1 秒内完成。
  • 99% 的用户应该能够在第一次尝试时成功登录

性能阈值是一种以正式方式描述您的期望的方式,并在每次测试运行时自动评估这些期望。配置阈值后,您将看到每个阈值的通过/失败指标,您将立即知道您的系统是否满足您的期望,而无需详细分析结果。

从量小着手

如果这是您第一次运行负载测试,请从量小着手。您的应用程序和基础设施可能并不像您想象的那样坚如磐石。这些测试会迅速导致他们的应用程序(或暂存环境)崩溃。

如果您的系统在负载测试下崩溃,则意味着您的负载测试已演变为压力测试。

参考官方文档

官方文档地址: https://k6.io/docs/


http://chatgpt.dhexx.cn/article/Hb77Bveu.shtml

相关文章

负载测试的最佳实践

当任何软件开发项目接近完成时&#xff0c;它可能已经通过了大量的测试&#xff0c;特别是在测试和开发同时进行的敏捷测试环境中。但是无论您运行了多少测试&#xff0c;一旦您的应用程序接近完成&#xff0c;实际上只有一种方法可以知道您的软件是否能够处理大量最终用户的实…

Split Pairs

问题描述&#xff1a; Split the string into pairs of two characters. If the string contains an odd number of characters, then the missing second character of the final pair should be replaced with an underscore (_). &#xff08;将一个字符串两两分开&#x…

B. Pairs

1.如果可以找出第两对数&#xff0c;且四个数完全不同&#xff0c;那么如果可以满足题意的话&#xff0c;那么那两个数一定在这四个数之中&#xff0c;那么暴力扫一遍就可以了 2.若找不出&#xff0c;那么一定可以满足题意 复杂度顶多 4n #include<algorithm> #include…

python版本的Pairs图

背景 在我2017年刚开始学习R语言的时候&#xff0c;我就被一个非常漂亮的图吸引到了。那个图非常漂亮。后来我才知道&#xff0c;那个图&#xff0c;叫pairs图。 大概是这样的&#xff1a; 类似的图还不少&#xff0c;还有这样的&#xff1a; 或者是这样的&#xff1a; 总结 …

PTP报文解析

以Sync报文为例&#xff0c;linux端执行sudo ptp4l -i eth0 -m -S&#xff0c;给windows端发送主节点报文&#xff0c;windows端用wireshark抓取到的报文如下图&#xff1a; 报文解析&#xff1a; 01 00 5e 00 01 81 &#xff1a;windows端mac地址&#xff1b; 78 d0 04 2c 6…

DHCP报文协议

Ipv4 单播&#xff0c;即点对点的通信&#xff0c;目的地址为单一目标的一种传输方式。 源IP、源MAC为发送者的IP和mac地址&#xff0c;目的IP、目的MAC为接收者的IP和mac地址。 广播&#xff0c;是指封包在计算机网络中传输时&#xff0c;目的地址为网络中所有设备的一种传输…

TCP报文段

TCP虽然是面向字节流的&#xff0c;但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分&#xff0c;而TCP的全部功能都体现在它首部中个字段的作用。因此&#xff0c;只有弄清TCP首部个字段的作用才能掌握TCP的工作原理。 TCP前20个字节使固定的&#xff0c;后…

OSPF报文格式

OSPF报文格式 OSPF报文可靠性机制&#xff1a; 由于OSPF协议是通过IP承载的&#xff0c;而IP协议是不可靠协议&#xff0c;所以OSPF需要自己的可靠机制来保证报文交互的可靠性在OSPF中有两种确认报文&#xff1a;1&#xff0c;显式确认报文&#xff08;LSACK&#xff09;2&…

机场气象报文解析

机场气象报文解析 背景示例思路代码结果预览致谢参考文献 从这篇文章&#xff0c;读者可以了解道机场气象报文的背景&#xff0c;知道其中数据大概长什么样子&#xff0c;如何利用python语言解析出机场气象报文里面的信息形成格式化数据。 背景 上个月的我国第六号台风“烟花…

Http协议报文格式

一、整体介绍 Http协议在传输层基于TCP协议&#xff0c;在Http1.1之前每次请求在TCP层都需进行一轮连接和释放&#xff08;三次握手、四次握手&#xff09;&#xff0c;从Http1.1开始默认使用长连接。 Http报文分为两种&#xff0c;请求报文和响应报文&#xff0c;大致格式如下…

CAN报文

CAN报文 Bit Numbering是汽车网络数据库用以辅助描述信号的专用术语&#xff0c;具体含义是位的编号顺序。 lsb0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 LSB 是least significant bit&#xff0c;最低有效位。 msb0 bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 MSB是Most Si…

TCP报文头部

TCP包头详解 主要学习端口号、三次握手、四次挥手 TCP包头 TCP报文固定长度20字节可变长度 TCP包头如下图所示&#xff1a; 源端口、目标端口&#xff1a;计算机上的进程要和其他进程通信是要通过计算机端口的&#xff0c;而一个计算机端口某个时刻只能被一个进程占用&…

ICMP报文

紫色代表一级目录 粉红代表二级目录 蓝色代表三级目录 红色代表关键字 橙色代表说明 ICMP报文   为了更有效地转发 IP 数据报和提高交付成功的机会&#xff0c;在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。   ICMP 是互联网的标准协议。  …

常见网络报文

TCP报文 1、端口号&#xff1a;用来标识同一台计算机的不同的应用进程。 1)源端口&#xff1a;源端口和IP地址的作用是标识报文的返回地址。 2)目的端口&#xff1a;端口指明接收方计算机上的应用程序接口。 2、序号和确认号&#xff1a;是TCP可靠传输的关键部分。序号是本报文…

报文、报文段、数据报、数据包、帧的概念区别

报文&#xff08;message&#xff09;—— 应用层 是网络中交换与传输的数据单元&#xff08;站点一次性要发送的数据块&#xff09;。报文包含了将要发送的完整的数据信息&#xff0c;其长短不一致。报文在传输过程中会不断的封装成分组、包、帧来传输&#xff0c;封装的方式…

报文、报文段、分组、包、数据报、帧、数据流的概念区别

1.报文(message) 我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元&#xff0c;也是网络传输的单元。报文包含了将要发送的完整的数据信息&#xff0c;其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输&#xff0c;封装的方式就是添加…

关于SPSS16的安装及教程

放SPSS安装文件 链接&#xff1a;https://pan.baidu.com/s/14QHqvok2IItQvV_72VPtOg 提取码&#xff1a;ee0k 接下来按照如下步骤操作就可以 按照上面的操作就可以完成安装了&#xff0c;这个属于比较老的SPSS版本&#xff0c;但是比较稳定。

【SPSS统计分析】SPSS19.0简体中文版安装教程(附SPSS19.0简体中文版下载)

spss19.0中文版是一款专业数据统计软件,受到各种社会学科的研究生、研究员的欢迎。软件能够对信息的采集、处理、分析进行全面评估和预测。spss19.0中文版新增加了广义线性混合模型、自动线性模型、一个统计网页入口portal和直复营销direct marketing功能等。另外,IBM 针对SP…

最新版最简单SPSS 26安装详细教程

SPSS为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称&#xff0c;有Windows和Mac OS X等版本。下面介绍安装教程 下载地址&#xff1a; 链接&#xff1a;SPSS下载地址 &#xff08;要是没有跳转到网盘请复制这个链接到…

spss20安装许可证代码_SPSS 22下载安装教程

软件下载 长按选择复制链接 [名称]:SPSS 22 [语言]:简体中文 [安装环境]:Windows [下载链接]: https://pan.baidu.com/s/1q4t2PtmyX2EcQy8E3CQnxg [提取码]: 6huj 链接失效、安装有问题请加微信:593003758拉你进软件资源小助手交流群 安装步骤 1.找到下载好的软件压缩包,…