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

news2025/2/24 20:48:42

背景

前些天刷抖音,看到网传的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 / post    connections: 10, // 连接数    pipelining: 1, // 流水线数量    duration: 10 // 持续时间}, console.log)

(左右滑动查看完整代码)

执行测试:

node app.js

(左右滑动查看完整代码)

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

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

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

如何发现系统突破口

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

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

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

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

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

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

压测没给到压力?

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

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

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

最后

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

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

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

在这里插入图片描述

全套资料获取方式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jvm中类和对象定义存储基础知识 | 京东云技术团队

1 类文件数据结构类型 Class文件结构主要有两种数据结构:无符号数和表 •无符号数:用来表述数字,索引引用、数量值以及字符串等,比如 图1中类型为u1,u2,u4,u8分别代表1个字节,2个字节,4个字节&#xff0c…

2023“水博会”召开,千寻位置携智慧水利创新方案登台亮相

6月7日,“2023中国水博览会暨第十八届中国(国际)水务高峰论坛”(简称“水博会”)在江苏南京开幕。千寻位置基于北斗时空能力,打造多款水利数字孪生解决方案,在本次水博会上亮相。 水利数字孪生工…

SNAP重采样哨兵2号 L2A级数据报错 Invalid S2 source product解决办法

原来安装的SNAP7.0:esa-snap_all_windows-x64_7_0.exe 重采样时报错: A problem occurred during the target product initialisation. Type: OperatorException Message: Invalid S2 source product 解决办法:下载SNAP新版本9.0 http:/…

再看const成员函数

文章目录 再看函数重载const成员函数保安(const)能保护所有人(类成员)吗?mutable修饰类成员 const/非const成员函数的复用 关于函数重载实际上我理解不是很深入,直接导致const成员函数这块出大问题&#xf…

SpringBoot+Vue 的网上图书商城管理系统

文章目录 1. 简介2 技术栈3.1系统功能 4系统设计4.1数据库设计 5系统详细设计5.1系统功能模块5.1系统功能模块5.2管理员功能模块 源码下载 1. 简介 本次设计任务是要设计一个网上图书商城,通过这个系统能够满足网上图书商城的管理功能。系统的主要功能包括首页、个…

第二十一章_Redis的缓存过期淘汰策略

Redis内存满了怎么办 redis 一共有 4 个命令来设置键的生存时间&#xff08;可以存活多久&#xff09;或过期时间&#xff08;什么时候被删除&#xff09; expire <key> <ttl>&#xff1a;将 key 的生存时间设置为 ttl 秒pexpire <key> <ttl>&#xf…

仓储WMS对接淘宝奇门详细说明【亲测可用】

文章目录 简介名词解释奇门对接方案前期准备系统调用流程代码实现思路关键点(个人观点)奇门对接关键代码可能遇到的问题 简介 淘宝奇门项目支持 ERP、WMS 之间的系统标准化对接&#xff0c;通过构建 ERP、WMS 系统之间标准通信协议来实现不同系统之间的打通&#xff1b;对商家…

day07——决策树

决策树 一、认识决策树二、API三、案例&#xff1a;泰坦尼克号乘客生存预测1&#xff0c;题目概述2&#xff0c;分析3&#xff0c;代码4&#xff0c;保存树结构 一、认识决策树 决策树思想的来源非常朴素&#xff0c;程序设计中的条件分支结构就是if-then结构&#xff0c;最早…

从2023年Q1,看当下的量子产业

光子盒研究院 一旦实现商业化&#xff0c;量子计算将带领人类进入一个全新的领域。 今天&#xff0c;人工智能(AI)、ChatGPT等大语言模型的处理能力受限于芯片有限的表面积&#xff1a;超过一定数量的GPU&#xff0c;每个GPU的批处理量就会变小——进一步增加数量反而会增大成本…

httprunner 2.x介绍与使用

一、原文地址&#xff1a; 使用说明_httprunner2.0 概述及使用说明 httprunner2接口测试框架说明文档 - 简书 二、介绍 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、…

HTML5、CSS3和JavaScript的基础知识以及从入门到精通的学习路径

摘要&#xff1a; HTML5、CSS3和JavaScript是现代Web开发的核心技术&#xff0c;掌握它们对于想要从事Web开发的人来说至关重要。本文将介绍HTML5、CSS3和JavaScript的基础知识以及从入门到精通的学习路径。通过深入理解这三种技术的特性和用法&#xff0c;并结合实践项目&…

MacOS怎么查看进程占用内存是多少

一、背景 在Linux下可以使用 free 命令来方便的查看内存占用情况&#xff0c;如 free -g、free -m等&#xff0c;但MacOS下没有这个命令。 既然如此&#xff0c;那么MacOS里是否有类似的工具呢&#xff1f; 而我们又该如何查看整个PC的内存占用情况&#xff0c;及指定进程的…

3.1 PTQ与QAT的介绍

1. 前言 TensorRT有两种量化模式&#xff0c;分别是implicitly量化(隐式量化)以及explicitly量化(显性量化)。 隐式量化(trt7 版本之前) 只具备 PTQ 一种量化形式各层精度不可控显示量化 显性量化(trt8 版本之后) 支持带 QDQ 节点的 PTQ 以及 支持带 QDQ 节点的 QAT 两种量…

从零开始,申请开通微信小程序全流程

本系列文章适合三类同学&#xff1a;1.希望学习小程序开发&#xff1b;2.希望无代码、低代码拥有自己的小程序&#xff1b;3.快速搭建小程序交作业、交毕设的大学生 本系列文章将推出配套桌面端软件&#xff0c;配合软件&#xff0c;可实现傻瓜式开发小程序&#xff0c;请有需求…

计算机体系结构-期末复习

计算机体系结构-期末复习 第一章 量化设计与分析基础 | 1.2.6 并行度与并行体系结构的分类 应用程序中主要有两种并行&#xff1a; 数据级并行&#xff1a;同时操作许多数据项实现的并行任务级并行&#xff1a;创建能够单独处理并大量采用并行方式执行的工作任务 所有计算…

如何理解网络—网络框架介绍

目录 前言 一.计算机网络背景 二.局域网和广域网 三.网络协议 3.1产生的背景 3.2分层实现 四.OSI七层模型 4.1OSI七层模型的结构 4.2如何理解OSI七层模型 五.TCP/IP五层(或四层)模型 六.网络传输基本流程 7.网络中的地址管理 7.1IP地址 7.2MAC地址 7.3MAC地址和IP地址的区别和联…

2021-2023浙江省内八大MBA项目招生情况:注意大小年啊~

现如今国内的MBA教育呈现出一片繁华景象&#xff0c;过去的这些年来每年几乎都有新增加的MBA招生院校&#xff0c;浙江省内目前共有九大MBA招生院校&#xff0c;除了浙大独领风骚之外&#xff0c;其余八个MBA项目也都有自己的一席之地。纵观2023年的招生录取&#xff0c;小立老…

ValueError: Object arrays cannot be loaded when allow_pickle=False

一、问题 使用numpy读取数据时出现错误&#xff0c;ValueError: Object arrays cannot be loaded when allow_pickleFalse。 查了一下numpy.load()函数 用法 numpy.load(file, mmap_modeNone, allow_pickLeFalse, fix_mportsTrue, encoding‘ASCII’) 参数 file&#xff1a;…

【Android】AMS(三)APP启动流程

启动方式 在 Android 系统中&#xff0c;启动一个应用程序可以分为三种启动方式&#xff1a;热启动、冷启动和温启动。它们分别表示了不同的启动方式和启动过程。 热启动 热启动是指在已经打开并处于后台运行的应用程序中&#xff0c;再次通过图标进入应用程序的启动方式。这…

Spring Security OAuth停更了?探索官方进化版Spring Authorization Server的革新之处!

1、背景 Spring Security OAuth(spring-security-oauth2)停更 主要意思是&#xff1a;生命周期终止通知 Spring Security OAuth(spring-security-oauth2)项目已达到生命周期结束&#xff0c;不再由VMware&#xff0c;Inc.积极维护。 此项目已被Spring Security和Spring Author…