都2023年了, 你还不会使用nodejs对项目压力测试?背景 前些天刷抖音,看到网传的java继父,求人攻击压测他的网
网络上流传的趣味测试,测出一些让人惊讶的结果 #生活乐趣# #日常生活趣事# #每日生活新鲜事# #每日新鲜事汇总#
背景
前些天刷抖音,看到网传的java继父,求人攻击压测他的网站,兄弟们这不得摩拳擦掌。
所以今天来聊聊如何对自己的项目、接口进行压力测试。
压力测试的目的
首先啊, 绝对不是为了压测、攻击别人的网站为乐。
1、探索线上系统流量承载的极限。
2、保障咱们这线上系统具备一定抗压能力
工具
autocannon 中文译为 自动炮, 是一款基于nodejs的压力测试工具,支持命令行和写代码来进行测试
npm 地址 www.npmjs.com/package/aut…
因为我是前端所有选择了这个。 其他诸如 ab、webbench均可。
压力测试
安装
全局安装autocannon
npm i autocannon -g
命令行使用
执行
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 请求头
写代码压测
命令行呢,执行简单的压力测试还好, 复杂一点,还是建议写脚本.
例如
1、对后端接口进行压力测试
我举例一个场景, 比如你想对某新增接口的短时间内大量 新增测试, 就可以来试试。
创建一个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秒。 如此就找到了一个问题。
手动创建这三千个创到什么时候,还得借助工具。
测试是不有jemeter等工具也能做?
如何定时执行?
假如你想每天指定时间 来对自己的项目进行压力测试, 是压测自己的 不是定时恶搞别人
那么你可以把上述逻辑写成一个方法 参照这篇juejin.cn/post/716360… 定时去执行它, 这样就可以愉快的定时压测自己项目了, 你学废了
如何不被发现?
有时候,有没有一种可能,你不想被同事发现,你压测了自己的项目。
不想被人发现,那么就不能暴露自己ip 。
建议不要使用公司的网络, 使用其他网络进行。
vpn带宽够的话也是不错的选择, 这样日志里都是香港、新加坡的ip, 同事们一头雾水。
或者在云服务器上执行, 访问日志就是云服务器的IP。
这样 被压测的一方就不知道来源ip了
如何发现咱系统的突破口?
前端静态页面没啥可看的。
找能拉高瓶颈的点, 必须大量计算的拉高cpu和榨干数据库磁盘的IO
建议啊,打开咱项目,看咱后端接口, 最好是增删改的, 找那种响应相对比较慢的, 这种应该逻辑比较复杂, 去测试它, 不出意外,同样并发,压测这个,cpu肯定飙的更高一些, 这样狠狠的测就能发现咱系统一些问题。
如何压测自己项目的时候查看可用情况?
众所周知,如果压测的并发数比较高,你本地的带宽基本被榨干,此时本地你访问项目,可用情况是不准确的!
所以最好有两台电脑, 或者有一台服务器。 一台执行测试自己的项目,另外一台看看能否正常访问,是不是崩了, 没崩说还没到咱们系统的极限,可以尝试加大压力。
压测没给到压力?
咱们是流量压测 属于DDOS
1、自身机器配置和网络带宽也是瓶颈, 倘若你本地带宽较小、机器配置也比较拉, 比如你设置10000qps, 你的机器资源有限,cpu都100%了, 也根本一秒钟发不出这么多, 那必然。。。。 加机器 加带宽吧 哥们。
2、 目标有昂贵的高仿服务器进行流量清洗、异常流量拦截, 你没有直接打到源站。
那你就找找源站ip, 直接压力给到源站。 花钱, 加机器, 这就是金钱之间的碰撞了。最后
压力测试可以模拟大量用户访问, 来测试我们应用的承载能力, 可以帮助我们提前发现问题和瓶颈,早早制定应对措施。
最后 大家不要对别的人网站随意压测呦。
网址:都2023年了, 你还不会使用nodejs对项目压力测试?背景 前些天刷抖音,看到网传的java继父,求人攻击压测他的网 https://www.yuejiaxmz.com/news/view/182284
相关内容
压力测试工具测试工具之压力测试工具推荐
Linux Web压力测试工具[ApacheBench(ab) / webbench]
个人压力测试
软件测试之压力测试
常用压力测试工具锦集 · 测试之家
软件测试之压力测试详解
几种常用的压力测试工具
10大主流压力测试工具
主流压力测试工具推荐