Skip to content
My Earlham College CS Capstone Project
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
misc
paper
poster
simulations
src
.gitignore
LICENSE
killall.sh
readme.org
run_sims.sh
setup.sh

readme.org

CS Capstone November 2017

Description

This is the entry point to my Earlham College CS Capstone project.

The aim of my research was to investigate the performance of innovative load balancing algorithms. This repository contains information for running my simulations along with all the source code.

misc/architecture/software_architecture_v3.pngmisc/interesting.png

Dependencies

Running the Simulation

Executing the setup.sh script will setup and run a load balancing simulation using Go, Nginx, Apache Bench, and Gnuplot. All you need to provide is the number of webservers to launch, total requests to benchmark, and number of concurrent requests allowed. You can also specify the directory the plot will be generated in (default is simulations/plots/).

./setup.sh <servers: 1..8> <requests> <concurrent> [plot directory]

There is a detailed log file generated in simulations/logs/ after each execution of setup.sh. If all goes well, the script will generate a new graph in simulations/plots/ with the simulation results.

For the best performance, you should recompile Nginx with debugging turned off (see my Nginx readme).

Running multiple simulations

The run_sims.sh script provides an example for executing as many simulations as one would like. It may run for a while, so consider using nohup.

nohup ./run_sims.sh &
tail -f nohup.out

Troubleshooting

If something goes wrong when running the simulation or any other script, make sure that the Nginx and all websevers are no longer running.

# check if process is running
ps aux | grep [n]ginx
ps aux | grep "./app -name"

# kill processes
nginx -s stop
pkill -f "./app -name"  # be careful with using pkill -f

More information about this repository

You can’t perform that action at this time.