记:本文自网上篇章改写而成。主要目的是为了理解压测工具运行的原理。
脚本主要实现的功能有以下几点。
- 允许不同的并发度和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