一、搭建web测试项目
性能测试过程中需要干净独立的系统,需要更真实模拟生产环境,包括硬件环境,软件环境等。
1.1 mysql环境搭建
安装mysql:
1 进入linux直接使用wget下载相应rpm包。
wget http://repo.mysql.com/mysgl57-community-release=e17-8.noarch.rpm
2、接着执行rpm命令,安装rpm包
rpm -ivh mysq|57-community-release el7 -8.noarch.rpm
3.安装mysql-server
yum y install mysql-server -nogpgcheck(去掉gpg检查)
yum -y install mysql-community-server --nogpgcheck (社区版)
启动mysql服务:
service mysqld start
登录mysql:
mysql -uroot -p
Mysql使用权限设置
mysq刚安装后需要进行一定设置才可以使用。
修改密码:
在/var/log/mysqld.log
中搜索temporary password,后面有最原始密码
修改一下mysq的安全配置:
set global validate_password_policy=0;
Set global validate_password_length=4;
set password =password('root );(设置密码)
SHOW VARIABLES LIKE 'validate_ password%';
或者直接更新表,不同版本会有安全机制差异。
update mysql.user set authentication_string = password ('root') where user= 'root';
刷新权限:
flush privileges;
Mysql对外使用权限设置
mysql设置对外可连接使用,在连接使用时出现以下情况,需要再对外进行授权操作。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
连接中防火墙一定也要记的关闭!!!!
firewall-cmd --version 查看版本
systemcti status firewalld --查看状态,firewall-cmd --state也可以使用这种查询
systemctl start firewalld --启动防火墙
systemctl restart firewalld.service --重启防火墙
systemctl stop firewalld.service --关闭防火墙
systemctl disable firewalld.service --设置开机停止防火墙
MySQL免密登录
在配置文件etc/my.cnf
修改,加上skip-grant-tables
,然后service mysqld restart
重启
1.2 订餐项目搭建
1.配置Java环境
安装jdk并在etc/profile
里添加Java环境变量
2.上传项目并配置
在项目的webapps/dingcan/WEB-INF/classes/database.properties修改数据库连接配置
3.运行tomcat,浏览器访问
二、计数器参数化+逻辑控制器
禁用HTTP Cookie管理器后如何通过参数取到Cookie传递:
cookie在子请求的信息头中设置,使用正则表达式提取后设置到信息头管理器:(或者勾选只有子集)
java请求可用于直接查看某一个值:
2.1计数器参数化
计数器参数化:
递增时为附加在后面,num的结果为11、12、13依次递增到不超过999
2.2逻辑控制器
事务控制器:将多个请求放到一个事务,勾选时聚合报告时只统计登录事务不分开统计
仅一次控制器:
只运行一次,通常将登录放到仅一次控制器里
吞吐量控制器:
每个接口访问的流量不一样,可以通过吞吐量控制器的比例控制
IF控制器:
switch控制器:
只执行控制器下的第2个请求
模块控制器:模块很多时选择执行哪些
2.3脚本优化
三、思考时间+JDBC压测
3.1 思考时间
-
固定定时器:固定延迟多少时间,注意所放位置不同作用域不同
-
统一随机定时器:
总延时=固定延迟时间+随机生成的延时
- 高斯随机定时器:
- 集合点:即同步定时器
等到5个用户再去执行,否则一直等待到5秒后运行
3.2 JDBC压测
使用带参数的sql语句:
四、jmeter插件安装
插件下载:https://jmeter-plugins.org/install/Install/
下载jmeter-plugins-manager.jar,将包放在jmeter的lib/ext目录里
常用的两个:
五、性能测试场景
总共100个,等待是10s开始执行,首先在5s内增加到40,持续50s,然后增加60,持续50s,最后在每5s下降10直到0
常见经典场景:
七、性能测试理论
常规性能测试目的:
性能测试专业名词:
最大用户数与最佳用户数理解:
以理发店为例:
一个理发店有3个师傅
每次理发需要一小时
客户等待最长时间为3小时
最大用户数:9个,3个在接收服务,3个已等待1小时,3个已等待2小时
最佳用户数:3个,3个客户到来时无需等待
八、性能测试流程
测试方案文档见实例
九、无界面压测
9.1 jmeter无界面压测
jmeter参数命令:
-n 非界面模式
-t 要测试的脚本
-l 表示执行的结果文件
-r 表示远程启动服务,后面写远程机器即slave机器列表
-R 指定部分压力机列表
生成的jtl文件在jmeter的聚合报告、图表等中可以打开
9.2 集群压测
使用windows当主机控制机,使用linux服务器当从机压力机。
1.将本机jmeter上传解压到Linux服务器,配置环境变量。
2.修改主机jmeter的配置文件,添加控制机ip和端口,端口与压力机server_port=1001对应。
3.设置压力机的server.rmi.ssl.disable=true
server_port为1001
server.rmi.localport=1001
启动成功:
4.在主机控制机中调用
运行–》远程启动–》选择远程机
注意:包和驱动文件等的位置要为主机包所在位置,开放服务器端口号
注意:
需要开放对应端口1001
开端口命令:firewall-cmd --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
firewall-cmd --list-all #查看已开放端口
在本机通过telnet ip号 端口号 验证
十、Linux实时监控命令
10.1 top命令
参数详解:
当cpu为多核时会出现占用率大于100%,假如为4核,则最高为400%
10.2 free命令
10.3 Vmstat命令
常用命令:
10.4 lostat命令
主要监控磁盘,常见命令:
10.5 df命令
确认磁盘大小空间瓶颈
10.6 Nestat命令
10.7 Nmon命令
十一、mysql慢查询监控
设置开启:
设置时间:
设置日志保存位置:
或者直接在配置文件中更改:
慢查询日志分析
mysqldumpslow 用于记录较多时筛选
mysql连接数设置:
连接数监控
连接池
数据库锁定位
直接查询系统表:
十二、redis性能测试
指标监控
进入redis-cli 使用info命令查看
redis监控平台搭建
treeNMS
Grafana
1.安装
十三、jvm监控
监控工具
十四、系统架构+全链路压测+性能测试报告
系统架构
架构演变过程:
全链路压测