负载机批量压测shell

一、上传shell脚本

sh文件用来批量运行Jmx文件及自动压缩结果,具体功能参考sh文件注释

[root@jmeter-158 hwmjmx]# pwd

/opt/apache-jmeter-5.1.1/hwmjmx

[root@jmeter-158 hwmjmx]# rz -y

脚本如下

test_jmx.sh

#变量
jmxpath=$1 #jmx文件路径
minUser=$2 #最小并发用户数
maxUser=$3 #最大并发用户数
duration=$4 #并发时长
interval=$5 #递增用户数

function readfile ()
{
maxUser_func=$2 
duration_func=$3 
interval_func=$4 
  for file in `ls $jmxpath` #循环取jmxpath路径下的文件
  do
        if [ "${file##*.}" == "jmx" ];  #如果文件名后缀是jmx
        then
           echo $jmxpath"/"$file #输出文件绝对路径
		   #脚本名称
		   filename="${file%.*}"  #取文件名前缀
		   minUser_func=$1
		   while (( minUser_func<=maxUser_func ))
		   do
		   echo "并发数="$minUser_func  #输出并发数
	       #运行函数run_jmeter:
	       #参数1=jmx文件绝对路径=$jmxpath"/"$file
	       #参数2=jtl文件名称=jmx文件名前缀_并发用户数=$filename"_"$minUser_func
	       #参数3=并发用户数
	       #运行完成run_jmeter后,并发用户数按interval递增,继续循环,直到并发用户数>最大并发数,循环终止。
           run_jmeter $jmxpath"/"$file $filename"_"$minUser_func"vu" $minUser_func  
		  (( minUser_func=minUser_func+interval_func))
		   #睡眠1分钟
		   sleep 20s
		   done
        fi
  done
  echo -e "**********************************\n测试结束\n**********************************"
  # time2=$(date "+%Y%m%d%H%M%S")
  # result_path="$jmxpath/result_$time2.zip"
  # zip -qr  $result_path $jmxpath
  # echo -e "**********************************\n请下载zip文件查看结果:\n《$result_path》\n**********************************"
}

function run_jmeter () {
  #echo "参数***********"$1 $2 $3  #输出jmx文件绝对路径、jtl文件名称、当前并发用户数 
  mkdir -p $jmxpath"/jtl/" #创建jtl文件夹
  mkdir -p $jmxpath"/html/" #创建html文件夹
  time2=$(date "+%Y%m%d%H%M%S")
  jtl_path="$jmxpath/jtl/$2_$time2.jtl"
  html_path="$jmxpath/html/$2_$time2"
  # jtl_path="$jmxpath/jtl/$2.jtl"
  # html_path="$jmxpath/html/$2"
  # time2=$(date "+%Y%m%d%H%M%S")
  # if [ -f $jtl_path ] ;then  #如果jtl文件已存在,则重命名新文件
  #     jtl_path="$jmxpath/jtl/$2_$time2.jtl"
  # fi
  # if [ -d $html_path ] ;then #如果html文件已存在,则重命名新文件
  #     html_path="$jmxpath/html/$2_$time2"
  # fi
  
  #拼接jmeter命令行:
  #$1=jmx文件绝对路径
  #$2=jtl文件名称
  #$3=当前并发用户数
  #$duration=并发时长
  #jmeter -n -t $1 -l $jmxpath"/jtl/"$2".jtl" -e -o $jmxpath"/html/"$2 -J users=$3 -J time=$duration 
  echo -e "***********jmeter命令行***********\njmeter -n -t $1 -l $jtl_path -e -o $html_path -J users=$3 -J time=$duration\n**********************************"
  jmeter -n -t $1 -l $jtl_path -e -o $html_path -J users=$3 -J time=$duration 
  return $?
}

if  [ ! -n "$1" ] ;then
    echo "Please input the target test case jmx path"
    read jmxpath
else
    jmxpath=$1

fi

readfile $minUser $maxUser $duration $interval

注:上传后记得授权才能使用(进入你上传sh文件的目录,再授权)

[root@jmeter-158 zyjmx]# chmod a+x test_jmx.sh

变绿即授权成功

二、创建专用文件夹

文件夹用来放本次测试的jmx文件、html及jtl等信息

[root@jmeter-158 hwmjmx]# pwd

/opt/apache-jmeter-5.1.1/hwmjmx

[root@jmeter-158 hwmjmx]# mkdir test

 

三、上传jmx脚本

选择jmx脚本上传

**********划重点**********

线程数=${__P(users,1)}

持续时间(秒)=${__P(time,100)}

http sample名称 = 自定义名称前缀_${__P(users,1)}

请求名称加后缀用户数是为了后期生成图表的时候,不同并发数可以放在一张图里展示,免得测试结果叠加在一起不方便处理图表。

*****************************

[root@jmeter-158 hwmjmx]# cd /opt/apache-jmeter-5.1.1/hwmjmx/test

[root@jmeter-158 hwmjmx]# rz -y

 

四、运行命令

运行命令

举个例子,现在有个脚本,想从20并发压到100并发,每次递增10个用户,每个场景运行10分钟。可以设置为:

./test_jmx.sh /opt/apache-jmeter-5.1.1/hwmjmx/test 20 100 600 10 >>/opt/apache-jmeter-5.1.1/hwmjmx/test/jmeter.log

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘凛枫叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值