This repository contains the artifacts created during a student research project at the University of Stuttgart. They contain helper scripts and configuration files for using and loadtesting the TrainTicket benchmark system, partially adapted/ported from work provided by Martin Straesser at the University of Würzburg. TrainTicket was developed at the Fudan University and can be found on GitHub.
Additionally, we provide some documentation based on our findings when running TrainTicket in our study.
deployments/
contains custom deployment files we created to run TrainTicket.loadgenerator/docker-deployment
contains a docker-compose and dockerfiles to run the load generator. The Steady State and Overload Profiles were created with LIMBO.loadgenerator/load-profiles
contains the load profiles used for load testing TrainTicket.loadgenerator/user-profiles
contains two user profiles defining requests to TrainTicket. The Steady State Profile is a set of requests simulating a user's interaction with TrainTicket. The Overload Profile sends GET, POST and DELETE requests to the food service.shell-scripts/
contains scripts to clean the databases of TrainTicket between load testing runs.traces/
contains a single trace for the/preserve
endpoint in TrainTicket, gathered with Jaeger.
Start TrainTicket w/docker-compose:
sudo docker-compose -f deployment/docker-compose-manifests/docker-compose-with-jaeger.yml up
Shutting down & cleaning up after TrainTicket - shuts down containers and removes unused networks and volumes.
sudo docker-compose -f deployment/docker-compose-manifests/docker-compose-with-jaeger.yml down
sudo docker network prune -f
sudo docker volume prune -f
Starting Minikube with more resources
minikube start --memory 16384 --cpus 6
Deleting and restarting the Minikube cluster (for a clean deploy)
minikube stop
minikube delete
minikube start --memory 16384 --cpus 6
Running the Minikube dashboard (helps with monitoring pods)
minikube dashboard
Deploying TrainTicket
cd deployment/kubernetes-manifests/quickstart-k8s
kubectl apply -f quickstart-ts-deployment-part1.yml
kubectl apply -f quickstart-ts-deployment-part2.yml
kubectl apply -f quickstart-ts-deployment-part3.yml
To improve the performance of TrainTicket, try the deployment without resource limits for services found in deployments/k8s-no-resource-limits/
.
First run load generator with:
java -jar httploadgenerator.jar loadgenerator
Then run loadgenerator director with:
java -jar httploadgenerator.jar director --load tinyRequests.csv -o testlog.csv --yaml scenario01-user-profile.yaml
Fault Analysis and Debugging of Microservice Systems: Industrial Survey, Benchmark System, and Empirical Study - Xiang Zhou, Xin Peng, Tao Xie, Jun Sun, Chao Ji, Wenhai Li, Dan Ding.
Run-Time Prediction of Power Consumption for Component Deployments - Jóakim von Kistowski, Maximilian Deffner, Samuel Kounev.
Modeling and Extracting Load Intensity Profiles - Jóakim Von Kistowski, Nikolas Herbst, Samuel Kounev, Henning Groenda, Christian Stier, Sebastian Lehrig