jmeter静默压测+可视化

时间:2021-10-12 00:15:41

静默压测自动化脚本auto_stress_test.sh

#!/usr/bin/env bash
export jmx_template="test2"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
export os_type=`uname` # 需要在系统变量中定义jmeter根目录的位置,如下
#export jmeter_path=/usr/local/jmeter/apache-jmeter-5.2 # 清空nohup.out
cat /dev/null > nohup.out # 强制杀掉JMeter进程
killJMeter()
{
pid=`ps -ef|grep jmeter|grep java|grep ${jmx_filename}|awk '{print $2}'`
echo "jmeter Id list :$pid"
if [[ "$pid" = "" ]]
then
echo "no jmeter pid alive"
else
kill -9 $pid
fi
} thread_number_array=(100 200 300)
for num in "${thread_number_array[@]}"
do
# 生成对应压测线程的jmx文件
export jmx_filename="${jmx_template}_${num}${suffix}"
export jtl_filename="test_${num}.jtl" rm -f ${jmx_filename} ${jtl_filename}
cp ${jmx_template_filename} ${jmx_filename}
echo "生成jmx压测脚本 ${jmx_filename}" if [[ "${os_type}" == "Darwin" ]]; then
sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
else
sed -i "s/thread_num/${num}/g" ${jmx_filename}
fi # JMeter 静默压测
nohup ${jmeter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename} &
sleep 30
killJMeter
rm -f ${jmx_filename}
done
echo "自动化压测全部结束"

jmeter脚本test2.jmx必须和auto_stress_test.sh脚本在同一个文件夹下

jmeter静默压测+可视化

docker 安装influxdb

启动influxdb
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb 进入influxdb容器
docker exec -it jmeterdb bash 进入influxdb输入
influx 创建数据库,名称为:jmeter
create database jmeter; 进入创建的数据库
use jmeter

jmeter静默压测+可视化

添加Backend LIstener

jmeter静默压测+可视化

Backend LIstener配置连接influxdb

influxdbUrl:http://119.3.89.184:8086/write?db=jmeter
119.3.89.184为你的ip
db:上面创建的influxdb的数据库名称 application:可以自己起名

jmeter静默压测+可视化

搭建grafana

docker run -d -p 3000:3000 --name=jmeterGraf grafana/grafana
初始用户名:admin
密码:admin

jmeter静默压测+可视化

jmeter静默压测+可视化

jmeter静默压测+可视化

jmeter静默压测+可视化

jmeter静默压测+可视化

jmeter静默压测+可视化

压测后

jmeter静默压测+可视化

导入模板的json文件

链接:https://pan.baidu.com/s/1lUGR-kMbk4hhNNKU7udzdQ 密码:hdz9