proxy.py/helper/benchmark.sh

71 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
#
# proxy.py
# ~~~~~~~~
# ⚡⚡⚡ Fast, Lightweight, Programmable, TLS interception capable
# proxy server for Application debugging, testing and development.
#
# :copyright: (c) 2013-present by Abhinav Singh and contributors.
# :license: BSD, see LICENSE for more details.
#
usage() {
echo "Usage: ./helper/benchmark.sh"
echo "You must run this script from proxy.py repo root."
}
DIRNAME=$(dirname "$0")
if [ "$DIRNAME" != "./helper" ]; then
usage
exit 1
fi
BASENAME=$(basename "$0")
if [ "$BASENAME" != "benchmark.sh" ]; then
usage
exit 1
fi
PWD=$(pwd)
if [ $(basename $PWD) != "proxy.py" ]; then
usage
exit 1
fi
TIMEOUT=1sec
CONCURRENCY=100
TOTAL_REQUESTS=100000
OPEN_FILE_LIMIT=65536
BACKLOG=OPEN_FILE_LIMIT
PID_FILE=/tmp/proxy.pid
ulimit -n $OPEN_FILE_LIMIT
PID=$(cat $PID_FILE)
if [[ -z "$PID" ]]; then
echo "Either pid file doesn't exist or no pid found in the pid file"
exit 1
fi
ADDR=$(lsof -Pan -p $PID -i | grep -v COMMAND | awk '{ print $9 }')
PRE_RUN_OPEN_FILES=$(./helper/monitor_open_files.sh)
run_benchmark() {
echo "CONCURRENCY: $CONCURRENCY workers, TOTAL REQUESTS: $TOTAL_REQUESTS req"
oha \
--no-tui \
--latency-correction \
-n $TOTAL_REQUESTS \
-c $CONCURRENCY \
-t $TIMEOUT \
http://$ADDR/http-route-example
}
run_benchmark
POST_RUN_OPEN_FILES=$(./helper/monitor_open_files.sh)
echo "Open files diff:"
diff <( echo "$PRE_RUN_OPEN_FILES" ) <( echo "$POST_RUN_OPEN_FILES" )
# while true; do netstat -ant | grep .8899 | awk '{print $6}' | sort | uniq -c | sort -n; sleep 1; done