寫了一個簡單的httpbenchmark指令碼

來源:互聯網
上載者:User

apache benchmark只能測一個單一url,我用shell寫了一個benchmark指令碼,支援並發測試,指定參數,不過沒有對回應時間和ret code做統計,適用在伺服器端做精確統計的情況。

#! /bin/bash

concurrency=50
workdirectory=/tmp/httpbenchmark_workdir/
inputurlfile=

function usage() {
echo "Http Benchmark is used for sending http request in pararrel."
echo "Usage: ./http_benchmark.sh [-c int] [-i string] [-w string]"
echo "-c: Specify concurrency number.(Default: 50)"
echo "-i: Specify input file, if it's empty,then read from standard input.(Default: \"\")"
echo "-w: Specify work directory.(Default: \"/tmp/httpbenchmark_workdir/\")"
}

function thread_run() {
fileno=$1
while read url
do
curl $url -s -o /dev/null
done < ${workdirectory}/spilits_${fileno}.lst
}

while getopts 'c:i:w:h' OPTION
do
case $OPTION in
c) concurrency="$OPTARG"
;;
i) inputurlfile="$OPTARG"
;;
w) workdirectory="$OPTARG"
;;
h) usage
exit 0
;;
?) usage
exit 1
;;
esac
done
shift $((OPTIND - 1))

echo "Concurrency=${concurrency}"
echo "Workdirectory=${workdirectory}"
echo "InputUrlFile=${inputurlfile}"
rm -rf $workdirectory
mkdir -p $workdirectory

# split url list.
echo "Begin splitting urls..."
lineno=0
if [ -z $inputurlfile ]; then
while read line
do
# as the 'split' command differs between different distribution, we do it manually.
if [ -n $line ]; then
fileno=`expr $lineno % $concurrency`
echo $line >> ${workdirectory}/spilits_${fileno}.lst
let lineno=$lineno+1
fi
done
else
while read line
do
# as the 'split' command differs between different distribution, we do it manually.
if [ -n $line ]; then
fileno=`expr $lineno % $concurrency`
echo $line >> ${workdirectory}/spilits_${fileno}.lst
let lineno=$lineno+1
fi
done < $inputurlfile
fi
echo "Splitting done."

# 'curl' in pararrel.
for i in `seq 1 $concurrency`
do
let pos=$i-1
thread_run $pos &
done

# wait
echo "Waiting subprocesses joined.."
wait
echo "Benchmark finished!Please inspect server log."

# clean work directory.
rm -rf $workdirectory

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.