Skip to content

Website Performance Testsuite

This testsuite covers performance of target website environment.

Prepare cluster / minikube

minikube delete
minikube config set driver hyperkit
minikube config set memory 8192
minikube config set cpus 4
minikube start --addons ingress,dashboard,metrics-server

echo "$(minikube ip) minikube.info operator-spaship.minikube.info simple-dev-spaship-examples.minikube.info simple-prod-spaship-examples.minikube.info advanced-dev-spaship-examples.minikube.info advanced-prod-spaship-examples.minikube.info" | sudo tee -a /etc/hosts

Deploy Operator

kubectl create namespace spaship
# Operator configuration
kubectl create configmap -n spaship spaship-operator-config \
        --from-literal=APP_OPERATOR_ROUTER_MODE=ingress \
        --from-literal=APP_OPERATOR_WEBSITE_DOMAIN=minikube.info
# Operator
kubectl apply -n spaship -f manifests/install.yaml

Prepare Watch Windows

Watch deployments:

kubectl create namespace spaship-examples
kubectl get -n spaship-examples deployment -w

Dashboard:

minikube dashboard

Simple Website Testsuite (no SSI)

Run jmeter

$JMETER/bin/jmeter.sh -t tests/performance/simple/perftest-simple.jmx &

Deploy Website

cd tests/performance/simple/
kubectl apply -n spaship-examples -f deployment-simple-dev.yaml

Configuration

  • 3 requests per test: main page, css, js
  • 100 concurrent requests
  • 100 loops

500m CPU, 2 replicas

kubectl apply -n spaship-examples -f patch-cpu-500m.yaml
kubectl scale -n spaship-examples --replicas=2 deployment simple-content-dev

Website is available under simple-dev-spaship-examples.minikube.info

500m CPU, 4 replicas

kubectl apply -n spaship-examples -f patch-cpu-500m.yaml
kubectl scale -n spaship-examples --replicas=4 deployment simple-content-dev

1000m CPU, 2 replicas

kubectl apply -n spaship-examples -f patch-cpu-1000m.yaml
kubectl scale -n spaship-examples --replicas=2 deployment simple-content-dev

1000m CPU, 4 replicas

kubectl apply -n spaship-examples -f patch-cpu-1000m.yaml
kubectl scale -n spaship-examples --replicas=4 deployment simple-content-dev

Cleanup

kubectl delete -n spaship-examples websites.spaship.io --all

Advanced Website Testsuite (SSI used)

Run jmeter

$JMETER/bin/jmeter.sh -t tests/performance/advanced/perftest-advanced.jmx &

Deploy Website

cd tests/performance/advanced/
kubectl apply -n spaship-examples -f deployment-advanced-dev.yaml

Configuration

  • 3 requests per test: main page (SSI performed), css, js
  • 100 concurrent requests
  • 100 loops

500m CPU, 2 replicas

kubectl apply -n spaship-examples -f patch-cpu-500m.yaml
kubectl scale -n spaship-examples --replicas=2 deployment advanced-content-dev

Website is available under advanced-dev-spaship-examples.minikube.info

500m CPU, 4 replicas

kubectl apply -n spaship-examples -f patch-cpu-500m.yaml
kubectl scale -n spaship-examples --replicas=4 deployment advanced-content-dev

1000m CPU, 2 replicas

kubectl apply -n spaship-examples -f patch-cpu-1000m.yaml
kubectl scale -n spaship-examples --replicas=2 deployment advanced-content-dev

1000m CPU, 4 replicas

kubectl apply -n spaship-examples -f patch-cpu-1000m.yaml
kubectl scale -n spaship-examples --replicas=4 deployment advanced-content-dev

Cleanup

kubectl delete -n spaship-examples websites.spaship.io --all

Results

2021-03-04

Model Identifier:   MacBookPro16,1
Processor Name: 6-Core Intel Core i7
Processor Speed:    2,6 GHz
Number of Processors:   1
Total Number of Cores:  6
L2 Cache (per Core):    256 KB
L3 Cache:   12 MB
Hyper-Threading Technology: Enabled
Memory: 32 GB
CPU Replicas Simple Web Advanced Web
500m 2 2100 1360
500m 4 4300 2780
1000m 2 3000 2700
1000m 4 3700 3300

Result numbers are throughput requests/second.