HTTP接口全链路压测

一、工具介绍

      gor:监听服务器上的请求并捕捉HTTP流量,把捕捉的流量保存到文件中,最后到需要压测的机器上下载该文件,进行回放

二、监听(可以写个脚本):

      1、前置脚本 

[[ $# -ne 7 ]] && echo "sh $0; please use sh $0 build_vocab IP PASSWORD 80 'Search?=' 1000000000 300" && exit 1
# 如果没有sshpass,安装一个,此处默认已安装
SSH_PARAM="-o ConnectTimeout=30 -o ServerAliveInterval=60 -o ServerAliveCountMax=5"
SSHPASS_SCP="./sshpass -p$PASSWORD scp -o StrictHostKeyChecking=no $SSH_PARAM"
SSHPASS_SSH="./sshpass -p$PASSWORD ssh -o StrictHostKeyChecking=no $SSH_PARAM"
#需要监控的IP
IP=$1
#对应机器的密码
PASSWORD=$2
#监控的服务端口号
PORT=$3
#监控的数据文件名
filename=$4
#监控的接口关键字,为空,默认所有服务下的接口全监控
URL_REG=$5
#监控的文件大小
NEED_SIZE=$6
#监听多长时间的流量,单位为m
TIMEOUT=$7
$SSHPASS_SSH root@$IP "rm -rf /export/gor && mkdir -p /export/gor"
#将采集数据脚本press_vocab.s拷贝过去
$SSHPASS_SCP press_vocab.sh root@$IP:/export/gor
local filename="request.gor"
$SSHPASS_SSH root@$IP "cd /export/gor && bash press_vocab.sh $PORT $filename \"$ URL_REG\" $NEED_SIZE $TIMEOUT"
$SSHPASS_SCP root@$IP:/export/gor/$filename $filename
exit 0

      2、press_vocab.sh :            

function press_vocab()
{
    [[ $# -ne 5 ]] && exit 1
    #安装gor工具
     wget https://github.com/buger/gor/releases/download/v0.12.1/gor_0.12.1_x64.tar.gz && tar xzvf gor_0.12.1_x64.tar.gz && cp gor /usr/local/bin
    local port=$1
    local filename=$2
    local url_reg=$3
    local need_size=$4
    local timeout=$5
    local extend_param="--http-set-param forcebot=1"
    [[ $port -eq 12231 ]] && local extend_param="--http-set-param gateway_cmd=1"
    [[ -n $url_regexp ]] && extend_param="$extend_param --http-allow-url $url_reg"
    nohup ./gor --input-raw :$port --output-file $filename --output-file-append $extend_param &
    local i=0
    while [[ $i -lt $timeout ]]
    do
         ((i++))
         sleep 60
         [[ ! -f $filename ]] && echo "no $filename" && break
         [[ $need_size -eq 0 ]] && continue
         file_size=`stat -c %s $filename`
         [[ $file_size -gt $need_size ]] && break
    done
    killall -9  gor
}
press_vocab "$@"
exit 0

三、压测

       在压测环境安装gor工具,然后将步骤二的$filename文件拷贝到需要压测机器上,然后执行压测,其中$PRESS_PERCENT为压测百分比,如2000%,即20倍;$DOMAIN可以是需要压测的域名或者ip+端口

      1、nohup ./gor --input-file "$filename|$PRESS_PERCENT" --output-http"$DOMAIN" --input-file-loop 2>&1 &

      2、屏蔽部分接口进行压测: nohup ./gor --input-file "$filename|$PRESS_PERCENT" --http-disallow-url "接口特性关键字" --output-http "$DOMAIN" --input-file-loop 2>&1 &

接下来就是根据监控看压测结果,或者自己写脚本统计压测结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值