shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本
在公司做壓力測試也挺長時間了,每次測試前環境數據準備都需要話費較長時間,所以一直在考慮能不能將整個過程實現自動化進行,于是就抽空寫了一個自動化腳本,當然這個腳本目前功能十分簡陋,代碼也不完善,很有很多需要改的地方,后續再優化。文中如有錯誤或者不妥之處,還望指教。
一、設計思路
1、初始化數據庫(導入用戶,清除數據等)
2、初始化緩存(使用了redis緩存優化系統)
3、執行壓力測試
二、目錄結構
目錄解讀:
apache-jmeter-3.0 為jmeter程序目錄
asserts.log 斷言日志
auto_jmeter.sh ? 腳本文件(啟動這個項目就是執行它)
jmeter.log jmeter啟動日志
三、代碼如下(按照慣例,所有涉及公司的代碼都有修改)
#!/bin/bash
set -e
LC_ALL=C
LANG=C
unset TZ
file_path="./"
host="192.168.0.32"
username="test"
password="test.123"
dbname="test"
jmeter_path="./apache-jmeter-3.0/bin/jmeter.sh"
jmx_path="./apache-jmeter-3.0/jmxs/termplan_dq.jmx"
jtl_path="./apache-jmeter-3.0/jtls/`date +%Y%m%d-%H%M`.jtl"
sql_path="./sqlFiles/"
#now=`date +date +%Y%m%d-%H%M`
###############33######
####數據庫初始化
###############33######
function init_data(){
echo "===========開始初始化相關數據============="
mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"
DELETE FROM t_user WHERE id > 50000;
DELETE FROM t_person WHERE id > 50000;
SELECT count(*) AS ‘壓測前預約總數‘ FROM t_test_table;
"
cd ${sql_path}
sql_name=`ls`
for file_name in ${sql_name[@]}
do
if [ -f "$file_name" ];then
#command="source $file_name"
mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e "source ${file_name}"
else
echo -e "\033[31;31m SQL文件不存在!!!\033[0m"
fi
done
cd ..
mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"
SELECT count(*) AS ‘新增用戶數‘ FROM t_user WHERE id > 50000;
"
echo "==========已完成初始化相關數據============"
}
###############33######
####緩存初始化
###############33######
function init_cache(){
echo "=============開始初始化緩存==============="
echo "==============初始化(kiwi)================"
curl "http://127.0.0.1:10000/test/test.action"
echo -e "\n==========初始化凍結緩存(kiwi)============"
curl "http://127.0.0.1:10000/test/test/zen.action"
echo -e "\n============已完成初始化緩存=============="
}
###############33######
####執行jmeter腳本
###############33######
function auto_jmeter(){
sh ${jmeter_path} -n -t ${jmx_path} -l ${jtl_path}
}
###############33######
####查詢數據(數據太多無作用,因為緩存到數據庫需要很長時間)
###############33######
function select_data(){
echo "============開始查詢相關數據=============="
mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"
select count(*) as ‘壓測后預約總數‘ from t_test_table;
quit
"
echo "============相關數據查詢完畢=============="
echo -e "\033[36;36m============壓力測試執行完畢==============\033[0m"
}
#######################
#######################
init_data
init_cache
auto_jmeter
sleep 10
select_data
四、執行結果如下圖
五、遺留的問題
1、jmeter壓力上不去,盡管加了1000個線程,但實際并發20左右,這個在之前發的文檔里面有數據呈現。
2、支持輸出html報告,需要實現,壓測報告更加直觀。如何輸出正確的測試報告非常重要。
等等
上述問題解決會繼續更新
【注】歡迎探討,歡迎轉載,但轉載請注明出處。
時間: 06-28
總結
以上是生活随笔為你收集整理的shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python解码base64_在pyth
- 下一篇: 牛角蕉的功效与作用、禁忌和食用方法