搭建测试环境

https://qg4tdx.yuque.com/docs/share/49877fb2-765a-4ba4-b97e-952e7079f3ca?#%20%E3%80%8ACopy%20of%20CNode%E7%A4%BE%E5%8C%BA%E5%BA%94%E7%94%A8%E3%80%8B cnode社区环境搭建.mp4

配置阿里云端口

默认应用使用的是 3000端口,阿里云默认是关闭3000端口的。
image.png
打开服务器的安全组。选择【入方向】—【手动添加】
image.png

添加 3000 端口
image.png
保存完成之后
image.png

image.png

重启 cnode社区

  1. cd /root/nodeclub/
  2. pm2 stop app
  3. pm2 start app.js

注册账号

搭建好环境。使用抓包工具,找到注册接口,
使用jmeter 批量注册1000个账号。

浏览器抓包

在浏览器上抓包, 记得把【保留日志】功能勾选。
image.png
抓到对应的包
image.png
copy 复制对应的请求。
image.png
复制出来之后,copy到 JMeter 中
image.png
生成对应的脚本
image.png

Charles 抓包

打开charles,进行抓包。找到对应的请求。
image.png

抓到请求之后, 复制【Curl Request】
image.png
生成对应的请求。
image.png
image.png

修改请求中的数据

修改请求中的用户名和邮箱地址。

函数助手

使用 randomstring 生成随机字符串。
image.png
生成随机的字符串。
image.png

${__RandomString(10,qwertyuioplkjhgfdsazxcvbnm,)}

对应的用户名,邮箱使用随机值来实现。
根据抓到的包,修改参数。
image.png

在JMeter 修改请求参数
image.png

附件

HTTP Request.jmx

添加断言

针对上面的请求添加断言。 注册成功之后 页面会有提示,对这个提示语进行断言。
image.png
使用响应断言。
image.png

压测

设计场景
并发数 50
压测 5分钟。
image.png
添加聚合报告
image.png

监控服务器

压测的时候需要监控服务器,使用 top 或者 htop 命令监控服务器。

压测完成之后可以看到对应的聚合报告
image.png

用户发帖压测

模拟多个用户发帖,需要使用到用户的token 值。token 在数据库中存放。

性能测试的测试数据怎么管理?
我们在做性能测试的时候,可以将需要的数据从数据库中导出。

用户激活

在Linux中输入 mongo 命令进入到mongodb 数据库。

mongo

image.png
现在已经进入
image.png
切换数据库

use node_club_dev

修改数据库中的数据。激活用户

db.users.update({"active" : false},{$set:{ "active" : true}},true,true)

image.png

退出 mongo

exit

image.png

mongodb 导出token数据

在Linux中执行如下语句

mongoexport -d node_club_dev -c users -f accessToken --csv -o /tmp/testusers.csv

image.png
这条命令 可以将mongodb 中保存的token值都导出到 /tmp/testuser.csv 文件中

  • mongoexport mongodb的导出命令
  • -d 要导出的数据库
  • -c 要导出的表
  • -f 要导出的字段
  • —csv 导出的文件类型
  • -o 导出文件保存的路径

导出成功之后 /tmp/ 目录下会有 testusers.csv文件
image.png
将文件下载下来。

sz /tmp/testusers.csv

用户发帖压测

在JMeter 中使用 导出的csv文件进行数据参数化,
创建新建话题 请求。token 值使用 csv 文件中的token,


创建CSV文件配置,变量名设置为token
image.png

新建主题中使用 变量
image.png
添加json断言
image.png

设置执行数量和执行时间
image.png
添加【聚合报告】
image.png
开始运行,运行的时候观察 聚合报告和服务器的状态。

压测完成之后,要保存下对应的数据,可以对比测试结果。
image.png

聚合报告可以保存到文件中。
运行压测的时候,服务器的状态也要保存到文件中 供后面进行数据分析。

搭建netdata 监控服务器的状态

下载安装文件
netdata-v1.26.0.zip

将文件zip文件上传到 服务器 /tmp 目录下
image.png
image.png
将zip文件解压到 /tmp 目录下

unzip netdata-v1.26.0.zip -d /tmp/

image.png

安装netdata

执行安装命令进行安装

bash /tmp/kickstart-static64.sh --local-files /tmp/netdata-v1.26.0.gz.run  /tmp/sha256sums.txt

image.png
会自动进行安装。

根据提示,输入 y 按下回车,会自动安装。
image.png
提示成功,说明已经安装完成。
image.png

开启19999端口

阿里云服务器手动开启 19999 端口,与开启3000端口的操作方式都一样。
https://www.yuque.com/imhelloworld/bypiud/uhipo9#fTizl

使用netdata

浏览器中输入 自己的 ip地址 19999 端口号。
image.png
主要关注的数据

  • CPU
  • 内存
  • 磁盘IO

image.png
image.png
image.png

磁盘IO
我们在创建话题的时候,服务器的操作是将请求传过来的数据保存到数据库,
保存到数据库的操作需要 写入到磁盘
如果磁盘的性能太差 (举个例子:从电脑往U盘传文件的时候,如果你的U盘性能太差,文件可能需要传很长时间。)磁盘写入的速度就会很慢,数据写不到磁盘
中,那么整个请求的响应时间就会很长。

保存数据

压测完成之后,下载数据
image.png
弹出对话框。
image.png

文件会自动下载
image.png

查看文件内容

netdata下载的文件只能在netdata上查看。
image.png
选择要导入的文件
image.png
点击导入
image.png

性能测试.png

作业

主机地址:rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
端口号:3306
用户名:fanmao65
密码:abc@fanmao65
数据库:fanmao65_hm

数据库作业
数据库练习


性能作业
浏览器上发帖,抓包
压测 50 并发, 并发3分钟,查看服务器状态以及 聚合报告。

浏览器端用户验证如果使用的是cookie 机制。
抓包之后导入到JMeter。
image.png
导入到JMeter的时候记得勾选 Cookie
image.png

压测服务器,查看聚合报告
image.png
同时监控服务器性能。
image.png