jmeter靜默壓測+可視化


靜默壓測自動化腳本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腳本在同一個文件夾下

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

添加Backend LIstener

Backend LIstener配置連接influxdb

influxdbUrl:http://119.3.89.184:8086/write?db=jmeter
119.3.89.184為你的ip
db:上面創建的influxdb的數據庫名稱

application:可以自己起名

搭建grafana

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





壓測后

導入模板的json文件
鏈接:https://pan.baidu.com/s/1lUGR-kMbk4hhNNKU7udzdQ 密碼:hdz9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM