#! /bin/bash -x # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # if [ -n "$1" ]; then worker_cnt=$1 else worker_cnt=1 fi if [ -n "$2" ]; then upstream_cnt=$2 else upstream_cnt=1 fi mkdir -p benchmark/server/logs mkdir -p benchmark/fake-apisix/logs make init trap 'onCtrlC' INT function onCtrlC () { sudo killall wrk sudo killall openresty sudo openresty -p $PWD/benchmark/fake-apisix -s stop || exit 1 sudo openresty -p $PWD/benchmark/server -s stop || exit 1 } for up_cnt in $(seq 1 $upstream_cnt); do port=$((1979+$up_cnt)) nginx_listen=$nginx_listen"listen $port;" upstream_nodes=$upstream_nodes"\"127.0.0.1:$port\":1" if [ $up_cnt -lt $upstream_cnt ]; then upstream_nodes=$upstream_nodes"," fi done if [[ "$(uname)" == "Darwin" ]]; then sed -i "" "s/worker_processes .*/worker_processes $worker_cnt;/g" conf/nginx.conf sed -i "" "s/listen .*;/$nginx_listen/g" benchmark/server/conf/nginx.conf else sed -i "s/worker_processes .*/worker_processes $worker_cnt;/g" conf/nginx.conf sed -i "s/listen .*;/$nginx_listen/g" benchmark/server/conf/nginx.conf fi sudo openresty -p $PWD/benchmark/server || exit 1 make run sleep 3 ############################################# echo -e "\n\napisix: $worker_cnt worker + $upstream_cnt upstream + no plugin" curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { }, "upstream": { "type": "roundrobin", "nodes": { '$upstream_nodes' } } }' sleep 1 wrk -d 5 -c 16 http://127.0.0.1:9080/hello sleep 1 wrk -d 5 -c 16 http://127.0.0.1:9080/hello sleep 1 ############################################# echo -e "\n\napisix: $worker_cnt worker + $upstream_cnt upstream + 2 plugins (limit-count + prometheus)" curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "limit-count": { "count": 2000000000000, "time_window": 60, "rejected_code": 503, "key": "remote_addr" }, "prometheus": {} }, "upstream": { "type": "roundrobin", "nodes": { '$upstream_nodes' } } }' sleep 3 wrk -d 5 -c 16 http://127.0.0.1:9080/hello sleep 1 wrk -d 5 -c 16 http://127.0.0.1:9080/hello sleep 1 make stop ############################################# echo -e "\n\nfake empty apisix server: $worker_cnt worker" sleep 1 if [[ "$(uname)" == "Darwin" ]]; then sed -i "" "s/worker_processes [0-9]*/worker_processes $worker_cnt/g" benchmark/fake-apisix/conf/nginx.conf else sed -i "s/worker_processes [0-9]*/worker_processes $worker_cnt/g" benchmark/fake-apisix/conf/nginx.conf fi sudo openresty -p $PWD/benchmark/fake-apisix || exit 1 sleep 1 wrk -d 5 -c 16 http://127.0.0.1:9080/hello sleep 1 wrk -d 5 -c 16 http://127.0.0.1:9080/hello sudo openresty -p $PWD/benchmark/fake-apisix -s stop || exit 1 sudo openresty -p $PWD/benchmark/server -s stop || exit 1