Skip to main content

Benchmarks

Use the Aerospike Node.js client benchmark tool to apply load and test your configuration.

The benchmark tool is a collection of example programs that provide an end-to-end example of a more complex Aerospike Node.js program.

Setup

To use the benchmark tool, install the aerospike module in the benchmarks directory.

From the benchmarks directory, run the following to install the dependencies:

npm install ../
npm update

Running the main Benchmark

main.js runs multiple batches of operations against an Aerospike cluster. It can run for a specified number of iterations or time frame.

To run main.js:

node main.js

The configuration parameters to run this benchmark are specified in config.json. A sample config.json is in the benchmarks directory. Modify the following parameters in config.json to run your desired configuration:

  • host The Aerospike host node (default = localhost).
  • port The port to use to connect to the Aerospike server (default = 3000).
  • namespace All the operations for benchmark are done on this namespace (default = test).
  • set The set name where all benchmark operations are performed (default = demo).
  • user The username to use to connect with the secured cluster (default = null).
  • password The password for the user connecting to the secured cluster (default = null).
  • timeout The global timeout for all read/write operations used in the benchmark (default = 0; never timeout).
  • ttl The time-to-live value for objects written during the benchmark (default 10000 seconds).
  • log The log level of the client module (default = INFO).
  • operations The number of operations for a single batch of operations (default = 100).
  • iterations The number of iterations for the benchmark to run (default = null; runs indefinitely).
  • processes The number of worker processes. These perform the actual read/write or scan/query operations in the Aerospike cluster (default = 4; recommended value is the number of CPUs/cores available).
  • time The time to run the benchmark, specified in seconds/minutes/hours (for example, 30s/30m/30h runs for the benchmark for 30 seconds/30 minutes/30 hours, respectively (default = 24h; run for 24 hours).
  • reads The read proportion of the read/write ratio (default = 1).
  • writes The write proportion of the read/write ratio. (default 1).
  • keyrange The range of key values to use in the benchmark for read/write operations (default = 0-100000).
  • binSpec The bin specification for write operations in benchmark, specified using
    • name The bin name.
    • type The bin type (STRING, BYTES, or INTEGER).
    • size The size of data to write to each bin (for integer type bins, the default size is 8).

Benchmark Output

The benchmark prints the read/write tps in the following format:

info: Fri Oct 02 2015 00:03:55 GMT+0530 (IST) read(tps=14434 timeouts=0 errors=0) write(tps=14350 timeouts=0 errors=0)

info: Fri Oct 02 2015 00:03:56 GMT+0530 (IST) read(tps=14009 timeouts=0 errors=0) write(tps=14119 timeouts=0 errors=0)

info: Fri Oct 02 2015 00:03:57 GMT+0530 (IST) read(tps=14691 timeouts=0 errors=0) write(tps=14581 timeouts=0 errors=0)

info: Fri Oct 02 2015 00:03:58 GMT+0530 (IST) read(tps=14200 timeouts=0 errors=0) write(tps=14200 timeouts=0 errors=0)

It then prints the benchmark run summary in the following format:

SUMMARY

  • Configuration

  • operations : 100

  • iterations : undefined

  • processes : 4

  • time : 30 seconds

  • Durations (milliseconds) : latency histogram of read/write operations.

<=1>1>2>4>8>16>32
8.4%11.9%21.7%27.0%18.4%10.6%1.9%
  • Status Codes : histogram for return values of read/write operations.
0
100.0%