1. 程式人生 > >並行壓力測試shell指令碼

並行壓力測試shell指令碼

記:本文自網上篇章改寫而成。主要目的是為了理解壓測工具執行的原理。
指令碼主要實現的功能有以下幾點。

  • 允許不同的併發度和sql執行次數
  • rand()實現隨機數選取
  • 重新執行會刪除或清空之前產生的檔案
#!/bin/bash
#**********************************#
#併發後臺執行fun                     #
#for wanggy 2012-01-25             #
#note: www.jquerycn.cn             #
#fun_num fun函式後臺執行次數          #
#sql_num 每個函式sql執行次數 # #**********************************# #刪除和清空產生的檔案 find ./ -name "fun*.log"|xargs rm -rf {} \ echo > call.log #資料庫變數設定 dbhost=127.0.0.1 dbbase=sakila dbuser=dbmon dbpass=123456 port=3307 #採用date實現隨機數選取 function rand(){ min=$1 max=$(($2-$min+1)) num=$(date +%s%N) echo
$(($num%$max+$min)) } #定義函式 fun() { #函式併發次數 fun_num=1 #函式內sql執行次數 sql_num=50000 for ((j=1;j<=$fun_num;j++));do { random_num=`echo $RANDOM` echo "第$j個函式" for ((i=1;i<=$sql_num;i++));do mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase -P$port <<GETRECODE >>
fun_$j.log select concat(first_name,last_name) as name from actor where actor_id = $(rand 1 50); GETRECODE echo "第$j個函式 第$i次" echo "第$j個函式 第$i次" >>call.log done echo "第$j個函式執行完成......" }& done wait } main() { fun } main exit 0