/mzbench

MZ Benchmarking

Primary LanguageErlangBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

MZBench

Expressive, scalable load testing tool

Build Status Join the chat at https://gitter.im/machinezone/mzbench Issue stats Pull Requests stats

Graphs

MZBench helps software testers and developers test their products under high real life load. By testing your product with MZBench before going to production, you reduce the risk of outages under real life highload.

MZBench runs test scenarios on many machines simultaneous, maintaining millions of connections, which make 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

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/machinezone/mzbench
$ sudo pip install -r mzbench/requirements.txt 

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

$ git clone https://github.com/machinezone/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