【性能测试】jmeter+Linux环境部署和分布式压测,一篇打通...
目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
1、linux获取动态ip或静态ip
1)virtualbox 加载linux虚拟机镜像文件,加载时重置全部网卡,加载后网络选择“桥接网络”–本机当前使用网卡;
2)ifconfig
#获取linux虚拟机ip地址,记下HWADDR 值;
3)vi /etc/sysconfig/network-scripts/ifcfg-eth0
#将 HWADDR 修改为上步的记录下来的值,BOOTPROTO=dhcp,自动获取动态ip;
4)rm -rf /etc/udev/rules.d/70-persistent-net.rules
#删除网络缓存文件;
5)service network restart
#重启网络服务
6)ifconfig
#验证是否自动获取了ip
7)如果在第5步报错failed,也可以设置使用静态ip,设置 ifcfg-eth0 里的 BOOTPROTO=static ,如下图,ip设置时,与主机当前wifi保持同一个网段。设置后进行第4步然后重启生效;
2、linux上jdk 安装
1)路径:/usr/local/
,输入rz,上传jdk-8u201-linux-i586.tar.gz,执行:tar xvf jdk-8u201-linux-i586.tar.gz
解压,生成jdk文件夹;
2)执行 vi /etc/profile
,配置环境变量,在profile 下面增加这段后,按esc,冒号,wq保存并退出:
export JAVA_HOME=/usr/local/jdk1.8.0_201
export JMETER_HOME=/export/servers/apache-jmeter-5.1.1 (jmeter配置,在/export/servers/路径下)
export JAVA_BIN=/usr/local/jdk1.8.0_201/bin
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_BIN:$JMETER_HOME/bin
3)执行 source /etc/profile
使配置文件生效;
4)执行java -v
,验证,返回jdk1.8,则安装配置成功;
3、linux上mysql 安装
1)先卸载系统自带的mysql,停止mysql:service mysql stop
2)查找以前是否装有mysql,命令:rpm -qa|grep -i mysql
,可以看到mysql的几个包:
qt-mysql-4.6.2-26.el6_4.i686
perl-DBD-MySQL-4.013-3.el6.i686
MySQL-client-5.6.17-1.linux_glibc2.5.i386
MySQL-server-5.6.17-1.linux_glibc2.5.i386
依次删除上述四个包:rpm -e --nodeps
包名
删除老版本mysql的开发头文件和库:
rm -rf /usr/lib/mysql rm -rf /usr/include/mysql
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql
3)将新版本 mysql-5.6.27-linux-glibc2.5-i686.tar.gz上传到/usr/local/ 下,tar xvf mysql-5.6.27-linux-glibc2.5-i686.tar.gz
,解压(如果解压过程中出现tar的报错,忽略)
4)然后重命名:mv mysql-5.6.27-linux-glibc2.5-i686 mysql
5)添加系统mysql组和mysql用户:
groupadd mysql
useradd mysql -g mysql
6)进入到解压完的mysql目录下,修改文件所有者和组为mysql , chown -R mysql:mysql ./*
7)安装数据库:执行命令 ./scripts/mysql_install_db --user=mysql
8)进入到mysql的support-files目录下,执行cp mysql.server /etc/init.d/mysql
9)启动mysql服务:执行命令service mysql start
10)执行命令:ps -ef | grep mysql
看到mysql服务说明启动成功
11)进入到mysql的bin目录下,设置密码:./mysqladmin -u root password '密码'
12)创建软链接,保证任何路径下都可以启动mysql:ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
13)登录mysql,mysql -u root -p
14)对远程访问进行授权: grant all privileges on *.* to root@"%" identified by '123456' with grant option;
mysql linux下导入数据
导入(必须在mysql内部执行):在mysql命令行下:source xxx.sql
导出(mysql外部执行):mysqldump
导出整个数据库(包括数据库中的数据):
mysqldump -u username -p dbname > dbname.sql
导出数据库结构(不含数据):
mysqldump -u username -p -d dbname > dbname.sql
导出数据库中的某张数据表(包含数据):
mysqldump -u username -p dbname tablename > tablename.sql
导出数据库中的某张数据表的表结构(不含数据):
mysqldump -u username -p -d dbname tablename > tablename.sql
mysql官方客户端常用命令:
创建数据库:create database xxx;
查看所有数据库:show databases;
使用某个数据库:use xxx;
查看当前数据库下有什么表:show tables;
查看某个表的表结构:desc xxx;
退出:exit;
例如:
创建数据库,启动数据库服务,登录mysql(见上方第9、13步)后,在mysql内部,输入 create database oa
;
进入oa库,导入sql: use oa
; 然后执行 source oa.sql;
4、linux上JMeter安装及参数优化
1)路径:/export/servers/
,输入rz
,上传apache-jmeter-5.1.1.zip,执行:unzip apache-jmeter-5.1.1.zip
解压,生成jmeter文件夹;
2)配置环境变量,参见二、linux上jdk 安装的环境变量配置步骤2,进到Jmeter 根目录下需要添加执行权限 chmod -R +x ./*
3)进入 jmeter文件夹,bin目录下:修改reportgenerator.properties 中 jmeter.reportgenerator.overall_granularity=1000(报表中数据展示间隔1秒);
4)修改控制台取样间隔的设置,bin下 jmeter.properties 中
summariser.interval=10,默认为30s,最低可修改为6s;
sampleresult.default.encoding=UTF-8 ,默认编码方式;修改bin下jmeter中,增加一行 HEAP="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=256m"
5、linux上tomcat部署
1)单项目部署:
仅一个项目时,将war包放到tomcat下webapps目录下,然后返回bin目录,执行:./startup.sh & tail -f ../logs/catalina.out
启动服务,然后去浏览器进入项目访问,就可以验证服务启动是否成功了。
2)多项目部署:
创建文件夹/export/apps,将项目的war包或其他格式压缩包 放入路径/app-pinter/pinter下,注意层级关系。/export/apps/app-oa/oa/WEB-INF等文件
复制tomcat为多个,重命名:
项目1:mv apache-tomcat-8.5.38 tomcat-pinter
,cd tomcat-pinter/conf
, vi server.xml
, 非编辑模式下按“/”搜索appBase, 修改路径为/export/apps/app-pinter
;
项目2:mv apache-tomcat-8.5.38 tomcat-oa
,cd tomcat-oa/conf
, vi server.xml
, 非编辑模式下按“/”搜索appBase, 修改路径为/export/apps/app-oa
;
然后修改项目2启动时所占用的端口号8080(HTTP/1.1)、8009(AJP/1.3)、8005(SHUTDOWN)为:8081、8010、8006
完成后,分别进入tomcat-**/bin
,运行:./startup.sh & tail -f ../logs/catalina.out
,即可启动各自对应的项目;
6、linux上jmeter脚本运行及报告生成
1)将windows上调试好的jmx脚本上传至home目录下新建文件夹test,(java请求,将jar包和依赖包文件夹放至jmeter下lib/ext/目录下);
2)单机器测试步骤: 执行./jmeter -n -t /home/test/TestPlan.jmx -l /home/test/result.jtl
-n:命令行模式,no-gui;
-t:jmx脚本路径;
-l:jtl结果文件存放路径
运行显示结果如下图,只展示total数据,不能区分接口
3)结果文件result.jtl 可以用sz /home/test/result.jtl
命令下载下来,使用jmeter查看聚合报告中的浏览打开;
4)在linux中分析结果生成报表:创建文件夹output,存放报表
执行:jmeter -g result.jtl -o output
将output中内容一起下下来,浏览器中打开可看到数据和趋势图表。
如果报找不到主机类错误,需配置一下hosts。步骤见下节
7、linux上JMeter 分布式压测
分布式测试步骤:举例—有压力机A(主)、B(辅), 被测机器C(启动tomcat服务)
1)需配host:vi /etc/hosts,在后面增加一行 192.168.0.12 hostname,否则启动jmeter server会报错!
2)在A、B上都部署 jmeter,路径相同。C上启动项目对应的tomcat服务。
3)如果是java脚本,将java脚本和相关lib包都放在A、B jmeter目录lib/ext下,将jmx上传到主压力机A上的/home/test(自己创建)/**.jmx下,如果有csv数据文件,传到A、B jmx脚本同路径下。
4)进入到jmeter目录下,将A、B j两台机器上的jmeter下所有文件都赋予可执行权限,chmod -R +x ./*
5)修改A jmeter/bin/jmeter.properties,将其中的remote_hosts修改为作为压力机的两台机器ip,remote_hosts=127.0.0.1,192.168.0.102
,修改server.rmi.ssl.disable=true
;
6)在A、B上进入到jmeter的bin目录下,都启动nohup ./jmeter-server &
,(后台启动jmeter-server服务)。
7)在主jmeter的机器上,执行 jmeter -n -t jdbc.jmx -l result.jtl -r
(r 表示多台机器)
8)另一种不需要改配置文件:执行jmeter -n -t jdbc.jmx -l result.jtl -R 127.0.0.1,192.168.0.12
(示例)
注意:
如果是http脚本,在controller的机器上有脚本文件即可;
如果是Java脚本,在每一台机器上都得有脚本文件和依赖的jar包;
必要时,修改jmx中的csv文件为绝对路径;
需要关闭两台压力机的防火墙:service iptables stop
;
两台压力机间互传文件 scp data.txt root@192.168.0.117:/home/test/,按enter回车后输入密码即可传送成功 ;
主压力机A上不要用ctrl+c或q手动退出运行,会导致B机器上停止不及时,如需停止,进入jmeter/bin下运行./shutdown.sh;
不同压力机上的数据会自动汇总到主压力机上;
如jmeter上两个线程组并发数各为10,两台压力机上最终统计的并发数为40;
完整版!企业级性能测试实战,速通Jmeter性能测试到分布式集群压测教程
下面是我整理的2025年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生最动人的风景,往往藏在最难攀爬的高处。当你觉得力竭时,请记住:每一次坚持都在雕刻更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!
你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!