1,jmeter修改并发数
jmeter进行压测的时候,相同的脚本不同的并发数,如果人工测试的话,每次并发结束后都需要人工修改并发数再次测试,如果通过shell脚本动态的修改并发数,等一个场景结束后自动进行下一个并发场景,不需要人工干预
2,shell脚本编写
复制内容到对应的shell脚本中即可
#!/bin/sh
#设置的jmeter的jmx脚本的环境变量
export jmx_filename="test.jmx"
#查看当前操作系统的环境变量,用单反引号
export os_type=`uname`
#定义一个杀掉jmeter进程的方法,防止之前跑的jmeter没有停用占用资源
killjmeter()
{
pid=`ps -ef |grep java| grep jmeter|grep ${jmx_filename} | awk '{print $2}'`
if [[ "${pid}" == "" ]];then
echo "jmeter当前没有运行。。。"
else
echo "jmeter当前运行的进程是:${pid}"
kill -9 ${pid}
fi
}
#执行结束进行的方法
killjmeter
echo "jmeter压测开始。。。。"
#定义一个线程数的数组
jmx_thread_num_arr=(50 100 150 200 250 300)
for num in ${jmx_thread_num_arr[@]}
do
#生成jmx带并发数的脚本
export jmx_num_filename="thread_${num}_${jmx_filename}"
#生成一个jtl文件,用来存储执行完脚本数据
export jtl_filename="jtl_${num}.jtl"
#新建一个文件夹存储生成的报告
export web_filename="web_${num}"
#在执行脚本之前清理当前文件下的jmx脚本、jtl脚本,web文件
rm -rf ${jmx_num_filename} ${jtl_filename} ${web_filename}
#复制模版脚本到当前
cp ${jmx_filename} ${jmx_num_filename}
echo "当前执行的脚本是:${jmx_num_filename}"
#判断当前的操作系统
if [[ ${os_type}=="Darwin" ]];then
#sed用来动态修改文件的内容,sed -i "" "s/thread_num/${num}/g" ${jmx_num_filename},-i强制修改,thread_num,需要被修改的字符串,${num}需要替换的并发数,${jmx_num_filename}需要被修改的文件,对应mac电脑,处于安全考虑,不能强制修改,所以需要定义一个空字符串用来替换,如果不想对原文件进行修改,可以备份,吧空字符串改成备份文件的后缀如“.bak”
sed -i "" "s/thread_num/${num}/g" ${jmx_num_filename}
else
sed -i "s/thread_num/${num}/g" ${jmx_num_filename}
fi
#执行静默压测命令,jmeter执行路径执行命令
jmeter -n -t ${jmx_num_filename} -l ${jtl_filename}
#生成报告
jmeter -g ${jtl_filename} -e -o ${web_filename}
#执行完成删除文件
rm -rf ${jmx_num_filename} ${jtl_filename}
done
3,jmeter设置脚本
jmeter设置线程数为字符串thread_num
评论前必须登录!
注册