(余胜军喊你压测他的网站)都2023年了, 你还不会使用nodejs对项目压力测试?

您所在的位置:网站首页 npm安装不了 (余胜军喊你压测他的网站)都2023年了, 你还不会使用nodejs对项目压力测试?

(余胜军喊你压测他的网站)都2023年了, 你还不会使用nodejs对项目压力测试?

2023-05-03 01:14| 来源: 网络整理| 查看: 265

背景

前些天刷抖音,看到网传的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/

执行示例截图

image.png

参数释义

-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

image.png

书写如下

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

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等工具也能做?

image.png

image.png

如何定时执行

假如你想每天指定时间 来对自己的项目进行压力测试。

那么你可以把上述逻辑写成一个方法 参照这篇juejin.cn/post/716360… 定时去执行它, 这样就可以愉快的定时压测自己项目了, 你学废了吗?

如何不被发现

有时候,有没有一种可能,你不想被同事发现,你压测了自己的项目。

那么就不能暴露自己ip。

建议不要使用公司的网络, 使用其他网络进行。

vpn带宽够的话也是不错的选择, 这样日志里都是香港、新加坡的ip, 同事们一头雾水。

或者在云服务器上执行, 访问日志就是云服务器的IP。

如何发现咱系统的突破口

前端静态页面没啥可看的。

找能拉高瓶颈的点, 必须大量计算的拉高cpu, 数据库磁盘的IO

建议啊,打开咱项目,看咱后端接口, 最好是增删改的, 找那种响应相对比较慢的, 这种应该逻辑比较复杂, 去测试它, 不出意外,同样并发,压测这个,cpu肯定飙的更高一些, 这样就能发现咱系统一些问题。

如何压测自己项目的时候查看可用情况

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

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

压测没给到压力?

咱们是流量压测 属于DDOS

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

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

最后

压力测试可以模拟大量用户访问, 来测试我们应用的承载能力, 可以帮助我们提前发现问题和瓶颈,早早制定应对措施。

最后 大家不要对别的人网站随意压测呦。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3