2024年了, 你还不会使用node.js做压力测试?

news/2024/11/13 9:53:56/

前些天刷抖音,看到网传的Java继父,求人攻击压测他的网站,这不得摩拳擦掌。

所以今天来聊聊如何对自己的项目、接口进行压力测试

压力测试的目的

首先, 绝对不是为了压测、攻击别人的网站为乐。

1、探索线上系统流量承载的极限;

2、保障咱们这线上系统具备一定抗压能力。

工具

autocannon,中文译为自动炮, 是一款基于nodejs的压力测试工具,支持命令行和写代码来进行测试。因为我是前端所有选择了这个,其他诸如 ab、ebbench均可。

压力测试

01 安装

全局安装autocannon:

npm i autocannon -g

02 命令行使用

执行:

autocannon -c 100 -d 5 -p 1 https://appvxnsma4r5053.pc.xiaoe-tech.com/

命令解释:用100个连接、持续5秒去访问 https://appvxnsma4r5053.pc.xiaoe-tech.com/

执行示例截图:

图片

参数释义:

-c/–connections NUM 并发连接的数量,默认10;

-p/–pipelining NUM 每个连接的流水线请求请求数,默认1;

-d/–duration SEC 执行的时间,单位秒;

-m/–method METHOD 请求类型 默认GET;

-b/–body BODY 请求报文体;

-H/–header 请求头。

写代码压测

命令行执行简单的压力测试还好,复杂一点,还是建议写脚本。

例如:

对后端接口进行压力测试

我举例一个场景, 比如你想对某新增接口的短时间内大量新增测试,就可以来试试。

创建一个js文件 例如:

touch app.js

从调试工具network复制fetch:

图片

书写如下:

将上一步复制出来的信息,悉数填在下面。

const autocannon = require('autocannon')
autocannon({url: '你的接口',"headers": {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q=0.9","authorization": "","cookie": "acw_tc=0bca324216820466206848044ebf9191e5a0e4b89a4e9bc8b18e333d13f537","Referrer-Policy": "strict-origin-when-cross-origin"},"body": "你的参数","method": "POST", // 你接口的methods get / postconnections: 10, // 连接数pipelining: 1, // 流水线数量duration: 10 // 持续时间
}, console.log)

执行测试:

node app.js

执行后发现压力测试执行了三千多次,创建了三千多个任务, 后端接口直接响应变成了30秒。

如此就找到了一个问题:手动创建这三千个创到什么时候,还得借助工具。

测试时,没有JMeter等工具也能做:

图片

图片

如何发现系统突破口

前端静态页面没啥可看的,找能拉高瓶颈的点,必须大量计算的拉高cpu和榨干数据库磁盘的IO。

建议打开项目,看后端接口, 最好是增删改的, 找那种响应相对比较慢的, 这种应该逻辑比较复杂, 去测试它。

不出意外,同样并发,压测这个,cpu肯定飙得更高一些, 这样狠狠地测试就能发现系统一些问题。

如何压测时查看可用情况?

众所周知,如果压测的并发数比较高,你本地的带宽基本被榨干,此时本地你访问项目,可用情况是不准确的!

所以最好有两台电脑, 或者有一台服务器, 一台执行测试自己的项目,另外一台看看能否正常访问,是不是崩了。没崩说还没到咱们系统的极限,可以尝试加大压力。

压测没给到压力?

咱们是流量压测,属于DDOS。

1、自身机器配置和网络带宽也是瓶颈, 倘若你本地带宽较小、机器配置也比较拉, 比如你设置10000qps, 你的机器资源有限,cpu都100%了, 也根本一秒钟发不出这么多, 那必然不行,只能加机器、加带宽。

2、 目标有昂贵的高仿服务器进行流量清洗、异常流量拦截, 你没有直接打到源站。那你就找找源站ip, 直接压力给到源站。

最后

压力测试可以模拟大量用户访问, 来测试我们应用的承载能力, 可以帮助我们提前发现问题和瓶颈,早早制定应对措施,但大家不要对别的人网站随意压测呦。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!


http://www.ppmy.cn/news/1462704.html

相关文章

接口测试流程详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 在讲接口测试流程之前,首先需要给大家申明下:接口测试对于测试人员而言&a…

系统架构师-考试-基础题-错题集锦1

系统架构师-考试-基础题-错题集锦 1.当一台服务器出现故障时将业务迁移到另外一台物理服务器上,保障了业务的连续性。 2.面向对象: 实体类,边界类,控制类 3.RUP:UP,统一过程,以架构为中心&am…

hive结合Hbase实现实时数据处理和批量分析

问题背景 Hive主要设计为一个用于大数据集的批处理查询引擎,并不是为实时查询或实时数据更新而设计的。它主要用于执行数据摘要、查询和分析。因此,Hive本身不支持实时数据更新或实时查询,它更适合用于对大量数据进行批量处理和分析。 分析…

美国空军出版物:网络空间作战

这份文件是《AIR FORCE DOCTRINE PUBLICATION 3-12: CYBERSPACE OPERATIONS》,即美国空军教义出版物3-12,关于网络空间作战。 该文件详细阐述了美国空军在网络空间领域的组织、规划、执行、评估以及相关的政策、角色和责任。 以下是其核心内容的概述&a…

事务管理控制

文章目录 1. 事务的基本概念2. 数据库的并发控制2.1 事务调度2.2 并发操作带来的问题2.3 并发调度的可串行性2.4 并发控制技术2.5 两段锁协议2.6 多粒度封锁协议 3. 数据库的备份与恢复3.1 数据库系统故障3.2 数据库的备份3.3 数据库的恢复 4. 数据库的安全性与完整性4.1 数据库…

词条唤夜兽唤夜兽的养殖与护理 幻兽帕鲁 唤夜兽怎么获取 唤夜兽去哪里抓 crossover玩Steam游戏

唤夜兽在地图上没有出现,是唤冬兽和雷冥鸟共同培育出来的帕鲁。 ------------------------- 介绍: 帕洛斯群岛之守护神,拥呼唤黑夜之力。 其会于灾厄席捲大地之际腾空而起,唤来无尽暗夜,试图封印灾厄。 ---------…

Nginx - 深入了解 正向代理vs反向代理 、负载均衡算法 、 缓存策略

文章目录 Nginx基本功能与代理定义Nginx反向代理工作原理应用场景示例配置 Nginx正向代理工作原理应用场景示例配置 反向代理与正向代理的区别Nginx负载均衡算法Nginx缓存策略静态内容缓存代理缓存缓存优化策略 Nginx高级安全设置动态内容缓存策略动态内容缓存配置动态内容缓存…

PHP开发安全:专家级代码审计策略与方法

PHP开发安全:专家级代码审计策略与方法 在当今的软件开发领域,PHP作为一种广泛使用的服务器端脚本语言,其安全性对于保护Web应用至关重要。代码审计是确保PHP应用程序安全的关键步骤。本文将探讨专家级的PHP代码审计策略与方法,帮…