搭建测试环境
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
配置阿里云端口
默认应用使用的是 3000端口,阿里云默认是关闭3000端口的。
打开服务器的安全组。选择【入方向】—【手动添加】
添加 3000 端口
保存完成之后
重启 cnode社区
cd /root/nodeclub/
pm2 stop app
pm2 start app.js
注册账号
搭建好环境。使用抓包工具,找到注册接口,
使用jmeter 批量注册1000个账号。
浏览器抓包
在浏览器上抓包, 记得把【保留日志】功能勾选。
抓到对应的包
copy 复制对应的请求。
复制出来之后,copy到 JMeter 中
生成对应的脚本
Charles 抓包
打开charles,进行抓包。找到对应的请求。
抓到请求之后, 复制【Curl Request】
生成对应的请求。
修改请求中的数据
修改请求中的用户名和邮箱地址。
函数助手
使用 randomstring 生成随机字符串。
生成随机的字符串。
${__RandomString(10,qwertyuioplkjhgfdsazxcvbnm,)}
对应的用户名,邮箱使用随机值来实现。
根据抓到的包,修改参数。
在JMeter 修改请求参数
附件
添加断言
针对上面的请求添加断言。 注册成功之后 页面会有提示,对这个提示语进行断言。
使用响应断言。
压测
设计场景
并发数 50
压测 5分钟。
添加聚合报告
监控服务器
压测的时候需要监控服务器,使用 top 或者 htop 命令监控服务器。
压测完成之后可以看到对应的聚合报告
用户发帖压测
模拟多个用户发帖,需要使用到用户的token 值。token 在数据库中存放。
性能测试的测试数据怎么管理?
我们在做性能测试的时候,可以将需要的数据从数据库中导出。
用户激活
在Linux中输入 mongo 命令进入到mongodb 数据库。
mongo
现在已经进入
切换数据库
use node_club_dev
修改数据库中的数据。激活用户
db.users.update({"active" : false},{$set:{ "active" : true}},true,true)
退出 mongo
exit
mongodb 导出token数据
在Linux中执行如下语句
mongoexport -d node_club_dev -c users -f accessToken --csv -o /tmp/testusers.csv
这条命令 可以将mongodb 中保存的token值都导出到 /tmp/testuser.csv 文件中
- mongoexport mongodb的导出命令
- -d 要导出的数据库
- -c 要导出的表
- -f 要导出的字段
- —csv 导出的文件类型
- -o 导出文件保存的路径
导出成功之后 /tmp/ 目录下会有 testusers.csv文件
将文件下载下来。
sz /tmp/testusers.csv
用户发帖压测
在JMeter 中使用 导出的csv文件进行数据参数化,
创建新建话题 请求。token 值使用 csv 文件中的token,
创建CSV文件配置,变量名设置为token
新建主题中使用 变量
添加json断言
设置执行数量和执行时间
添加【聚合报告】
开始运行,运行的时候观察 聚合报告和服务器的状态。
压测完成之后,要保存下对应的数据,可以对比测试结果。
聚合报告可以保存到文件中。
运行压测的时候,服务器的状态也要保存到文件中 供后面进行数据分析。
搭建netdata 监控服务器的状态
下载安装文件
netdata-v1.26.0.zip
将文件zip文件上传到 服务器 /tmp 目录下
将zip文件解压到 /tmp 目录下
unzip netdata-v1.26.0.zip -d /tmp/
安装netdata
执行安装命令进行安装
bash /tmp/kickstart-static64.sh --local-files /tmp/netdata-v1.26.0.gz.run /tmp/sha256sums.txt
会自动进行安装。
根据提示,输入 y
按下回车,会自动安装。
提示成功,说明已经安装完成。
开启19999端口
阿里云服务器手动开启 19999 端口,与开启3000端口的操作方式都一样。
https://www.yuque.com/imhelloworld/bypiud/uhipo9#fTizl
使用netdata
浏览器中输入 自己的 ip地址 19999 端口号。
主要关注的数据
- CPU
- 内存
- 磁盘IO
磁盘IO
我们在创建话题的时候,服务器的操作是将请求传过来的数据保存到数据库,
保存到数据库的操作需要 写入到磁盘。
如果磁盘的性能太差 (举个例子:从电脑往U盘传文件的时候,如果你的U盘性能太差,文件可能需要传很长时间。)磁盘写入的速度就会很慢,数据写不到磁盘
中,那么整个请求的响应时间就会很长。
保存数据
压测完成之后,下载数据
弹出对话框。
文件会自动下载
查看文件内容
netdata下载的文件只能在netdata上查看。
选择要导入的文件
点击导入
作业
主机地址:rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
端口号:3306
用户名:fanmao65
密码:abc@fanmao65
数据库:fanmao65_hm
数据库作业
数据库练习
性能作业
浏览器上发帖,抓包
压测 50 并发, 并发3分钟,查看服务器状态以及 聚合报告。
浏览器端用户验证如果使用的是cookie 机制。
抓包之后导入到JMeter。
导入到JMeter的时候记得勾选 Cookie
压测服务器,查看聚合报告
同时监控服务器性能。