MZ Benchmarking
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
acceptance_tests Fix all links: github.com/machinezone -> github.com/satori-com Jan 5, 2018
bench_loop Move interpeter to mzbench_language app Oct 13, 2015
bin update rebar3 to 3.4.4 Oct 11, 2017
common_apps new plugin to work with kubernetes Apr 10, 2018
deployment/helm/mzbench Version bump May 22, 2018
doc pass option load_workers_subdirs to the node May 16, 2018
doc_old Add forgotten postfix of ntp_max_timediff Apr 5, 2018
examples.bdl
examples
lib Fix quoting inside strings Aug 31, 2017
migrations
node Version bump May 22, 2018
server Upgrade to Erlang 20 Jun 1, 2018
worker_templates Fix all links: github.com/machinezone -> github.com/satori-com Jan 5, 2018
workers
.gitignore Auto versioning for dashboard May 31, 2017
.travis.yml
CHANGELOG Version bump May 22, 2018
Dockerfile more cleaning steps May 16, 2018
LICENSE
README.md
mkdocs.yml Index fixes Apr 6, 2017
requirements.txt Install erl_terms from pip repo Oct 9, 2015

README.md

MZBench

Expressive, scalable load testing tool

Build Status Join the chat at https://gitter.im/machinezone/mzbench

Graphs

MZBench helps software developers benchmark and stress test their products. Testing of your product with MZBench before going to production may reduce the risk of outages under real life highload.

MZBench runs test scenarios on many machines simultaneously, maintaining millions of connections, which makes it suitable even for large scale products.

MZBench is:

  • Cloud-aware: MZBench can allocates nodes directly from Amazon EC2 or run on a local machine.
  • Scalable: tested with 100 nodes and millions of connections.
  • Extendable: write your own cloud plugins and workers.
  • Open-source: MZBench is released under the BSD license.

Read the docs →

Protocols

Out-of-the-box it supports HTTP, MySQL, PostgreSQL, MongoDB, Cassandra, XMPP, AMQP, TCP, Shell commands execution, Simplified HTTP, and TCPKali.

Implementing addtional protocols is not that hard, but if you want something particular to be implemented — feel free to create an issue.

Installation

From RPM and Pip

Available for CentOS 7 and Amazon Linux.

Download MZBench RPM from Github releases page

# Install RPM
sudo yum install -y <rpm_file_downloaded_from_github_releases>

# Install Python package
sudo pip install mzbench_api_client

# Start the server
mzbench start_server

From Docker container

Docker is a container platform, more information is available at its website. If you have Docker up and running, use the following command to start MZBench server:

docker run -d -p 4800:80 --name mzbench_server docker.io/ridrisov/mzbench

After that, open http://localhost:4800/ to see the dashboard. Sources for this docker image are available on github.

Instead of download the image from the docker hub, you may want to build it manually:

docker build -t mzbench -f Dockerfile .

From Helm package

Helm is a package manager for Kubernetes. We assume that:

Given that you can install mzbench in k8s with the command

helm install --name mzbench-server deployment/helm/mzbench

From sources

To use MZBench, you'll need:

  • Erlang R17+
  • C++ compiler
  • Python 2.6 or 2.7 with pip

Download MZBench from GitHub and install Python requirements:

$ git clone https://github.com/satori-com/mzbench
$ sudo pip install -r mzbench/requirements.txt

If you want to use virtualenv (optional) to isolate Python dependencies:

$ git clone https://github.com/satori-com/mzbench
$ cd mzbench
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt

Quickstart

Start the MZBench server on localhost:

$ cd mzbench
$ ./bin/mzbench start_server
Executing make -C /path/to//mzbench/bin/../server generate
Executing /path/to//mzbench/bin/../server/_build/default/rel/mzbench_api/bin/mzbench_api start

When the server is running, launch an example benchmark:

$ ./bin/mzbench run examples.bdl/ramp.bdl
{
    "status": "pending",
    "id": 6
}
status: running                       00:09

Go to localhost:4800 and see the benchmark live status:

Test Benchmark

Read Next