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

前些天刷抖音,看到网传的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, 直接压力给到源站。

最后

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python批发模块的调试之旅:从新手到专家的蜕变

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、调试技巧的重要性 二、批发模块调试的实战演练 1. 设置断点 2. 逐行执行代码 3. 观察…

安全风险 - 检测Android设备系统是否已Root

在很多app中都禁止 root 后的手机使用相关app功能,这种场景在金融app、银行app更为常见一些;当然针对 root 后的手机,我们也可以做出风险提示,告知用户当前设备已 root ,谨防风险! 最近在安全检测中提出了一…

【博主推荐】HTML5实现520表白、情人节表白模板源码

文章目录 1.设计来源1.1 表白首页1.2 甜蜜瞬间11.3 甜蜜瞬间21.4 甜蜜瞬间31.5 甜蜜瞬间41.6 甜蜜瞬间51.7 甜蜜瞬间61.8 永久珍藏 2.效果和源码2.1 页面动态效果2.2 页面源代码2.3 源码目录2.4 更多为爱表白源码 3.源码下载地址 作者:xcLeigh 文章地址:…

行业首发 | MS08067-SecGPT(送邀请码)

一、简介 MS08067-SecGPT基于LLM大模型技术专门为网络安全领域设计的智能助手,集问答、分析、工具为一体的对话式安全专家,支持可以创建多会话问答。目的是辅助用户完成网络安全相关的工作,学员通过问答方式体验到SecGPT所具备的威胁情报分…

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令: net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL(-u为用户名-p为密码) //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…

开源博客项目Blog .NET Core源码学习(25:App.Hosting项目结构分析-13)

本文学习并分析App.Hosting项目中后台管理页面的文章管理页面。   文章管理页面用于显示、检索、新建、编辑、删除文章数据,以便在前台页面的首页、文章专栏、文章详情页面显示文章数据。文章管理页面附带一新建及编辑页面,以支撑新建和编辑文章数据。…

智慧平安小区建设方案:EasyCVR视频+AI能力全面提升小区安全管理水平

随着城市化进程的加快和科技的不断发展,智慧平安小区建设成为了提升社区治理水平和居民安全感的重要手段。TSINGSEE青犀EasyCVR智慧平安小区平台采集汇总智慧小区各类视频资源基础数据,进行分级分类管理,并为公安、政法、大数据局、街道社区等…

从零开始:Spring Boot项目中如何集成并使用Infinispan

一、介绍 Infinispan 其实就是一个分布式缓存和数据网格平台,提供了高度可扩展和高性能数据缓存解决方案。Infinispan可以作为本地缓存或分布式缓存使用,支持事务、查询、处理大数据等功能。简单地说,Infinispan 可以理解为是 MySQL 的内存版…

docker容器安装nexus3以及nexus3备份迁移仓库数据

一、安装步骤 1.搜索nexus3镜像 docker search nexus3 2.拉取镜像 docker pull sonatype/nexus3或者指定版本 docker pull sonatype/nexus3:3.68.0 3.查看拉取的镜像 docker images | grep "nexus3" 4.启动nexus服务 直接启动 docker run -d --name nexus3 -…

优于InstantID!中山大学提出ConsistentID:可以仅使用单个图像根据文本提示生成不同的个性化ID图像

给定一些输入ID的图像,ConsistentID可以仅使用单个图像根据文本提示生成不同的个性化ID图像。效果看起来也是非常不错。 相关链接 Code:https://github.com/JackAILab/ConsistentID Paper:https://ssugarwh.github.io/consistentid.github.io/arXiv.pd…

Sentinel重要的前置知识

文章目录 1、雪崩问题及解决方案1.1、雪崩问题1.2、超时处理1.3、仓壁模式1.4、断路器1.5、限流1.6、总结 2、服务保护技术对比3、Sentinel介绍和安装3.1、初识Sentinel3.2、安装Sentinel 4、微服务整合Sentinel ​🍃作者介绍:双非本科大三网络工程专业在…

二叉树实战演练

目录 1.二叉树前序遍历---leetcode 思路 画图解析: 2.相同的树的判断 思路: 3.对称二叉树 思路分析: 4.另一棵树的子树 思路: 5.二叉树的便利---牛客网 建立二叉树的逻辑图: 总结: 1.…

Python3 笔记:部分专有名词解释

1、python 英 /ˈpaɪθən/ 这个词在英文中的意思是蟒蛇。但据说Python的创始人Guido van Rossum(吉多范罗苏姆)选择Python这个名字的原因与蟒蛇毫无关系,只是因为他是“蒙提派森飞行马戏团(Monty Python's Flying Ci…

Softing工业将亮相2024年阿赫玛展会——提供过程自动化的连接解决方案

您可于2024年6月10日至14日前往美因河畔法兰克福11.0号馆,Softing将在C25展位展出,欢迎莅临! 作为工业应用中数据交换领域公认的专家,Softing工业致力于帮助各行各业的客户部署网络自动化和优化生产流程。 使用Softing产品&…

什么是DNS缓存投毒攻击,有什么防护措施

随着企业组织数字化步伐的加快,域名系统(DNS)作为互联网基础设施的关键组成部分,其安全性愈发受到重视。然而,近年来频繁发生的针对DNS的攻击事件,已经成为企业组织数字化发展中的一个严重问题。而在目前各…

基于Go实现的分布式主键系统

基于Go实现的分布式主键系统 摘要 随着互联网的发展,微服务得到了快速的发展,在微服务架构下,分布式主键开始变得越来越重要。目前分布式主键的实现方式颇多,有基于数据库自增的、基于UUID的、基于Redis自增的、基于数据库号段的…

Day3: LeedCode 203. 移除链表元素 707. 设计链表 206. 反转链表

详细讲解移步:Day3: LeedCode 203. 移除链表元素 707. 设计链表 206. 反转链表-CSDN博客 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入&a…

Mybatis源码剖析---第一讲

Mybatis源码剖析 基础环境搭建 JDK8 Maven3.6.3&#xff08;别的版本也可以…&#xff09; MySQL 8.0.28 --> MySQL 8 Mybatis 3.4.6 准备jar&#xff0c;准备数据库数据 把依赖导入pom.xml中 <properties><project.build.sourceEncoding>UTF-8</p…

关于阳光雨露外派联想的面试感想

最近在找工作&#xff0c;接到了一个阳光雨露外派联想的面试邀请。说实在的一开始就有不对劲的感觉。想必这就是大厂的自信吧&#xff0c;上就问能不能现场面试&#xff0c;然后直接发面试邀请。这时候我倒是没觉得有啥问题。 然后今天就去面试去了&#xff0c;住的比较偏&…

CSS demo演示 20240524

说明&#xff1a;不修改父盒子的样式&#xff0c;只在子盒子上设置定位&#xff0c;让子盒子定位在父盒子右侧。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>…