73 lines
1.6 KiB
Bash
Executable File
73 lines
1.6 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 $output
|
|
|
|
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
|