并行压力测试shell脚本

这篇博客介绍了如何使用Shell脚本进行并行压力测试,脚本支持不同并发度和SQL执行次数,并利用rand()生成随机数进行选择。同时,它会在每次运行前清理之前的测试文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记:本文自网上篇章改写而成。主要目的是为了理解压测工具运行的原理。
脚本主要实现的功能有以下几点。

  • 允许不同的并发度和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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值