A rather simple message passing system written in Java. The system uses a PostgreSQL database as a storage backend and an arbitrary amount of middleware servers. Clients connect to a middleware server to be able to send and receive messages to and from queues.
This project uses ant. Simply check out the repository and run
ant build
the /scripts
folder contains a script called experiment.sh
that allows you to simply deploy the system to a set of servers.
bash experiment.sh --dbMachine=dryad01.ethz.ch --dbPersistent=false
--serverMachines=dryad02.ethz.ch,dryad03.ethz.ch --serverWorkerTotal=60
--clientMachines=dryad04.ethz.ch,dryad05.ethz.ch --clientTotal=100
--clientWorkload=staticsmall --clientRunTime=300 --clientRunCount=-1
--clientThinkTime=0 --remoteUserName=ubuntu --experimentId=6
The parameter dbMachine
specifies the IP of the system where the database should be deployed.
dbPersistent
is a flag that can be used to make the database state persistent between multiple benchmark runs.
serverMachines
takes an arbitrary amount of IPs separated by commas where the middlewares will be deployed on. \texttt{serverWorkerTotal} specifies the total amount of workers over all middlewares. \
clientMachines
is similar to serverMachines
but used for the client instances. clientTotal
defines the total amount of clients. When using n clientMachines
and m clientTotal
each instance will run m/n (rounded down) clients. clientWorkload
defines the workload of the experiment. clientRunTime
is used to limit the execution time of each client in seconds. Instead of seconds one can also limit the client run time by number of request by using clientRunCount
. -1 defines no limit. If one wants to add a think time between each client request, clientThinkTime
can be modified.
remoteUserName
specify the name of the user for the remote systems.
experimentId
allows to give this experiment a name for better categorization.
The script will then execute the following steps automatically:
- parse command line parameter
- build server and client from source into a .jar using ant
- check if passwordless login is enabled
- cleanup servers in case some old experiments are still running
- copy compiled .jar's to client and server instances
- setup postgres
- run database, server and clients remotely
- wait for the clients to finish
- shutdown database and server
- copy log files from remote locations
- invoke further processing of log files