webtest.sh 很不错的WEB服务器压力测试脚本

发表于:2012-04-16来源:linux安全网作者:zhaoyun00点击数: 标签:压力测试
#!/bin/bash ################################################################################# # 说 明 # 1、下载耗时测试 # 2、多线程测试

  #!/bin/bash #################################################################################

  # 说 明

  # 1、下载耗时测试

  # 2、多线程测试

  #

  # 使用方法: ./webtest

  # 使用本脚本程序,可进程对网关web进行压力测试,测试

  # 功能主要包括:

  # 1、对自身机器的压力测试

  # 2、对其他机器的压力测试

  #

  ################################################################################### ######################################自定义部分####################################

  #

  # 参数简介:

  # SERVER为配置要测试的机器IP地址

  # NAME定义设备的名称

  # GRAPH定义是否生成折线图的参数文件

  # VALUE此值为定义对下载速度测试的次数

  # TIME 配置是否开启长时间测试,不间断测试

  # MODE 配置本机器担当的角色

  #

  ##################################################################################### #要测试的URL地址,也可写ftp的。

  URL=https://192.168.0.133/wget.jsp

  export URL #服务器标识

  NAME=lanse #设置是否生成图表数据

  #GRAPH=OFF

  GRAPH=ON #设置下载速度测试的次数;

  #如果在SERVER端配置此参数后,客户端无法同步,可以tailf test.logfor;

  #当wget到这个数值时,再在客户端执行脚本。如果不需要可以将此处设置为0;

  #SC模式不受其影响

  VALUE=0 #VALUE=5000 #长时间压力测试单位(分钟);

  #配置TIME小于MAXTIME为开启长时间压力测试。如果相等为不开启。 MAXTIME=6000

  TIME=6000 #设置模式,分(SC/SERVER/CLIENT)

  #SC 即是客户端模式,又是服务器模式,主要用于自压测试;

  #SERVER 主要用来测试别的设备;

  #CLIENT 当作客户端来用,主要配合另一台SERVER对自己的压力测试来提取系统资源信息。 #MODE=CLIENT

  MODE=SERVER

  #MODE=SC #配置压力级别, 分0/1/2/3, 4个级别,级别越高,压力越小, 默认0为最大压力;

  #适合稳定性测试。 LEVEL=0

  #LEVEL=1

  #LEVEL=2

  #LEVEL=3 #配置停止几秒后增加一个线程。 SPACE=3 #配置本次压力的测试,一共下载多少次,用来精确分析数据,最好不要与长时间同时配置;

  #主要可以得到对不同设备测试,下载所用时间,成功率,失败率;

  #如果同时配置,那个先执行完就结束进程;

  #配置NUMBER小于MAXNUMBER为开启状态。 MAXNUMBER=9000000

  NUMBER=3000

  ###########################程序运行部分########################################

  >file

  >startfail

  >test.logfor

  echo 2 >sta

  date +%s > time

  echo 2 > whstat

  >OK

  >test.logwhile

  >graph

  >established #1^$#

  if [ $MODE = SC -o $MODE = SERVER ] ; then echo 'time=`date +"%Y-%m-%d %H:%M:%S"`' > test.sh

  echo "while [ 1 ] " >> test.sh

  echo "do" >> test.sh

  echo "wget $URL -c -q -t 3 -T 5 --no-check-certificate" >>test.sh

  echo ' if [ $? -eq 0 ] ; then ' >>test.sh

  echo ' echo $time wget ok >> test.logwhile ' >>test.sh

  echo " else " >> test.sh

  echo ' echo $time wget fail >> test.logwhile ' >>test.sh

  echo " fi" >>test.sh

  if [ $LEVEL -eq 1 ] ; then

  echo "sleep 1 " >> test.sh

  fi

  if [ $LEVEL -eq 2 ] ; then

  echo "sleep 2 " >> test.sh

  fi

  if [ $LEVEL -eq 3 ] ; then

  echo " sleep 3 " >> test.sh

  fi

  echo "done" >> test.sh

  chmod a+x test.sh

  for ((i=0;i<=$VALUE;i++))

  do

  #2^#

  wget $URL -c -q -t 3 -T 5 --no-check-certificate

  if [ $? -eq 0 ] ; then

  echo $time wget ok $i >> test.logfor

  else

  echo $time wget fail $i >> test.logfor

  fi

  #2$#

  done

  T=`cat time`

  N=`date +%s `

  S=`echo "$N-$T" | bc `

  M=`echo "scale=1;$S/60"|bc |awk -F. '{print $1}'`

  MS=`echo "scale=1;$S/60"|bc |awk -F. '{print $2*0.01*60}'|awk -F. '{print $1}'`

  echo \ ; echo \ >> file

  echo "当前模式为 【 $MODE 】 模式" >> file

  echo \ ; echo \ >> file

  echo "下载速度测试结果:" >>file

  if [ $S -lt 60 ] ; then

  echo \ ; echo \ >> file

  echo "本次下载用了$S 秒" >>file

原文转自:http://www.ltesting.net