搭建环境
根据上面文档搭建测试环境。
压测场景
场景
打开注册页面,注册1000个账号
用户注册没有专门的接口。可以通过抓包来获取注册的接口。
打开注册页面
使用 【右键】—【检查】
找到 【网络】
点击【清空】,清空所有请求历史记录。
勾选【保留日志】, 【禁用缓存】
在注册页面输入 对应的数据。点击【注册】按钮。
抓包分析
请求方式:Post
请求地址:http://1.117.45.85:3000/signup
请求参数类型: Content-Type: application/x-www-form-urlencoded
请求body数据:
loginname: helloworld
pass: 123456
re_pass: 123456
email: helloworld@163.com
_csrf:
JMeter创建线程组
根据抓到的包,设置对应的请求。因为用户名和邮箱地址不能重复,使用函数助手生成对应的随机值。
比如现在要注册1000个账号
线程组设置
线程数: 模拟虚拟用户
Ramp-Up 时间: 虚拟用户启动所需的时间。 比如上面的线程数设置为100, ramp-up 设置为10, 表示10秒内启动100个虚拟用户(这个时间的配置根据自己的电脑来决定)
循环次数: 执行次数 如果设置为【永远】,默认一直执行。
设置【永远】跟【调度器】 一起联合使用
持续时间: 运行的时间
启动延迟:延迟启动。
聚合报告
执行性能测试的时候,可以通过【聚合报告】,查看性能情况。
添加【聚合报告】
运行,查看聚合报告
样本数: 执行数量
平均值:平均响应时间【毫秒】
异常率: 出错的情况 (最好是 0%)
吞吐量:每秒处理的能力
激活账号
账号注册完成之后,需要自己手动去服务器中修改数据激活。
登录Linux服务器。
输入命令 mongo
进入mongo数据库中
常用mongo命令
查看数据库
show databases;
使用数据库
我们项目使用的库 node_club_dev
use node_club_dev;
查看所有的表
show tables;
查询表中内容
db.users.find({});
激活所有注册的账号
db.users.update({"active" : false},{$set:{ "active" : true}},{multi:true});
导出所有的token
我们的token是在users表中存储。后续做 新建主题 压测 需要使用到token值。
退出mongo 的命令行。
exit;
执行命令
mongoexport -d node_club_dev -c users -f accessToken --csv -o /tmp/testusers.csv
- mongoexport mongodb的导出命令
- -d node_club_dev 导出的数据库
- -c users 导出表名称
- -f accessToken 导出的字段名
- —csv 导出的数据文件格式为 csv
- -o /tmp/testusers.csv 数据导出路径
将导出的csv文件下载到本地
sz /tmp/testusers.csv
压测服务器
性能场景:
- 新建主题
- 收藏主题
性能要求:
- 并发数 50
- 持续时间 300秒
提交:
- 聚合报告
- 服务器的CPU,内存信息。
相关问题
- 服务器挂了 怎么办?
- 使用
reboot
命令 重启服务器 - 重新连接服务器,执行命令 ```python cd /root/nodeclub pm2 start app.js
- 使用
```
- 下面配置 执行压测。 有没有区别
1个线程循环10次 与 10个线程循环一次的区别
虽然最终都产生了10个请求,但是他们是有区别的:
1 个线程, 表示1个用户,1个用户发送第一个请求之后再发送第二个请求,这样循环了10次,他们是串行的(一个执行完成之后才能执行下一个)
10个线程, 表示 同时10个用户在发送请求, 10个请求同时在发送,他们是并行的。