BigBench.js
bigbench.js is a distributed load-generation framework for web application benchmarking that collects data in real-time.
Visit bigbench.io for more information and documentation.
Installation
It is written in pure Javascript and runs on node.js. Therefore you can install it using npm: sudo npm install bigbench -g
Bot Network
The load is generated by a bot network. Multiple bots can be started on a single or multiple machines. This allows the generation of an almost unlimited amount of requests. A ramp-up time allows the bots to start gradually over the specified time period.
Concurrency
The concurrency is controlled by two things: A concurrency parameter and the amount of bots. A concurrency parameter setting of 2 means that each bot starts 2 requests at the same time, waits for the to return and then continues with the next action.
Multiple Actions
An action is a URL the benchmark requests. Each benchmark can have a single or multiple actions where the actions are defined by the url, the request path, the HTTP method and the parameters. The parameters can either be a fixed value object or a function that generates dynamic parameters for each request.
Real-Time Analysis
The benchmark is fully controlled from a single instance, e.g. the localhost. All bots report their data live to a shared Redis database which means that the current requests per second and average request duration is always up-to-date.
Rationale
We created BigBench because we were not satisfied with the usability and features of jMeter and ApacheBench. Our approach is to make it easy to use but with a maximum of performance.
Testing
To test start the following components:
redis-server --port 6380
node helpers/test_server.js
node helpers/test_proxy.js
jake test
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request