jmeter 在Linux 环境实现。

一、线程组运行逻辑

ramp-up时间:启动所有线程数所需要的时间,仅仅作用于线程启动时,线程启动成功后,ramp-up就不起作用了,通常保持默认值即可。

逻辑:
1、各个线程组之间是完全独立的,每个线程组做的是不同的业务,它们之间相互不影响
2、每个线程组中的每个线程也是完全独立的,它们之间相互不影响
3、线程组中的每个线程,都是从上往下按照一个顺序去执行请求,完成一轮循环后,会继续进行下一轮的循环,一直到设置的循环次数或者是设置的循环时间到了

二、线程组间的数据传递

Jmeter中保存的变量,都是线程私有,哪个线程保存的,只有哪个线程可以用
Jmeter保存的变量,是不能跨线程组使用的
测试计划处定义的变量是全局变量,每个线程组都可以使用。但是全局变量是不能修改,如果某个线程修改了,修改后的值只有这个线程可见,其他线程读到的值仍然是原始值
Jmeter中如果想实现跨线程组数据传递,只能使用属性

Jmeter中的属性:一种固定的配置,属性是全局共享的,可以读取,也可以修改,可以实现跨线程组数据传递。
常用的操作属性的函数:
1、property:获取一个属性的值
2、setProperty:设置/更新一个属性的值

三、Linux 配置 Jmeter

Linux在线安装程序
yum install -y 程序包名
yum install -y unzip

添加可执行权限,在jmeter的bin目录下:chmod +x ./*
后台启动:nohup java -jar pinter.jar &
关闭防火墙:systemctl stop firewalld
禁止开机启动防火墙:systemctl disable firewalld

vi工具:
vi 文件路径
vi打开文件后,默认是非编辑模式,如果想输入内容,需要按i键,进入编辑模式(insert),这个时候就能移动光标,输入字符
保存并退出,需要先按Esc,然后输入:wq
不保存退出,需要先按Esc,然后输入:q!

1、 上传 jdk-8u221-linux-x64.tar.gz 到 Linux 的/usr/local 目录下
2、 解压:tar xvf jdk-8u221-linux-x64.tar.gz
3、 修改配置文件:vi /etc/profile
4、 光标移动到最后一行,添加以下配置
export JAVA_HOME=/usr/local/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

5、 退出 vi,执行命令 source /etc/profile,让配置生效
6、 执行 java -version 命令,如果能看到版本信息,配置成功

四、 Jmeter命令行压测(单机)

准备工作:
1,压力机安装并配置好JDK
2,在windows下调试好jmeter脚本,并上传至Linux下
3、进到Jmeter 根目录下需要添加执行权限 chmod -R +x ./*
单机器测试步骤:
jmeter -n -t pinter.jmx -l result.jtl
-n: 命令行模式,no-gui
-t:jmx脚本路径;
-l:jtl结果文件存放路径

五、 命令行模式HTML 报表

Html报表生成步骤:
1,进入jmeter的bin目录下,修改reportgenerator.properties
2,修改jmeter.reportgenerator.overall_granularity=1000(报表中数据展示间隔1秒)
3,创建一个存放数据报表的文件夹
4,执行命令:jmeter -g result.jtl -o ./output
其中:
-g 指定jtl文件的路径
-o 指定html报表生成到哪个文件夹下

六、 Jmeter命令行模式-结果报表

三种方式来获取Jmeter的结果报表
一、在GUI模式下跑Jmeter的脚本,用tps插件实时展示图表
二、在命令行模式下跑Jmeter的脚本,生成的jtl文件,在GUI界面的聚合报告里打开,可以展示tps
和 响应时间等数据
三、在命令行模式下跑Jmeter的脚本,生成的jtl文件,通过Jmeter自带命令,生成html报表(即html报告)

注意:
在实际工作中,不推荐第一种执行方式,会影响Jmeter的性能。

七、 命令行概要日志

八、 如何解决命令行模式下运行jmeter脚本出现报错

1、如果是部分请求报错,可以使用查看结果树,将报错的请求和相应数据记录到xml中,然后在jmeter界面中,使用查看结果树再次打开xml,就能看到相关信息了。

在查看结果数里配置,添加error.xml文件,仅错误日志,所有关键字的日志信息
2、如果脚本没有执行起来,可以查看jmeter.log文件中是否有相关的异常日志

九、 分布式压测

分布式压测
场景:如果单台压力机CPU使用了>80%的话,说明压力机几乎达到极限,很难再产生更大的压力,为了避免压力机本身成为性能瓶颈,所以要增加更多的压力机一起参与压测。
分布式压测时,有1个主压力机,还有N个从压力机

修改hosts文件:vi /etc/hosts
查看进程:ps -ef | grep 进程名

重启jmeter-server进程
1、先查询jmeter-server的进程号:ps -ef | grep jmeter-server (忽略grep自身进程)
2、再通过kill命令杀死进程:kill -9 进程号1 进程号2 进程号3 ...
3、再启动jmeter-server

分布式测试步骤:
系统HOSTS文件中进行类似 本机IP 主机名的配置,如10.0.0.23 zhoucentos,否则启动jmeter-server会报错!
1,在每台机器上都部署 jmeter
2,如果是java脚本,将java脚本和相关lib包都放在jmeter目录lib/ext下
3,将jmeter的场景文件jmx上传到主jmeter的任意位置,参数文件放到每一台压力机上(存放目录要相同)
4,每台机器修改jmeter.properties文件,ssl.disable=true(去掉注释)
5,在每台机器上进入到jmeter的bin目录下,都启动nohup ./jmeter-server &(后台启动jmeter-server服务)
6,在主jmeter的bin目录下,修改jmeter.properties,将其中的remote_hosts修改为作为压力机的两台机器ip,
remote_hosts=127.0.0.1,192.168.0.102
7,在主jmeter的机器上,执行jmeter -n -t pinter.jmx -l result.jtl -r(示例,具体目录和路径自定义)
注意:
1、如果是http脚本,在controller的机器上有脚本文件即可;
2、如果是Java脚本,在每一台机器上都得有脚本文件和依赖的jar包


 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值