open-consul/bench/results-0.3.md

5.9 KiB

Consul Benchmark Results

As part of a benchmark, we started a 4 node DigitalOcean cluster to benchmark. There are 3 servers, meaning writes must commit to at least 2 servers. The cluster uses the 16GB DigitalOcean droplet which has the following specs:

  • 8 CPU Cores, 2Ghz
  • 16GB RAM
  • 160GB SSD disk
  • 1Gbps NIC

We used bonnie++ to benchmark the disk, and the key metrics are:

  • 188MB/s sequential write
  • 86MB/s sequential read-write-flush
  • 2636 random seeks per second

Output

Below is the output for a test run on a benchmark cluster. We ran the benchmark several times to warm up the nodes, and this is just a single representative sample.

Note, that a single worker was running the benchmark. This means the "stale" test is not representative of total throughput, as the client was only routing to a single server.

===== PUT test =====
GOMAXPROCS=4 boom -m PUT -d "74a31e96-1d0f-4fa7-aa14-7212a326986e" -n 20480 -c 64 http://localhost:8500/v1/kv/bench
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %

Summary:
  Total:	5.0053 secs.
  Slowest:	0.0414 secs.
  Fastest:	0.0062 secs.
  Average:	0.0156 secs.
  Requests/sec:	4091.6699
  Total Data Received:	102400 bytes.
  Response Size per Request:	5 bytes.

Status code distribution:
  [200]	20480 responses

Response time histogram:
  0.006 [1]	|
  0.010 [568]	|∎∎
  0.013 [6184]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.017 [7594]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.020 [3425]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.024 [1506]	|∎∎∎∎∎∎∎
  0.027 [775]	|∎∎∎∎
  0.031 [209]	|∎
  0.034 [142]	|
  0.038 [44]	|
  0.041 [32]	|

Latency distribution:
  10% in 0.0111 secs.
  25% in 0.0126 secs.
  50% in 0.0148 secs.
  75% in 0.0174 secs.
  90% in 0.0218 secs.
  95% in 0.0243 secs.
  99% in 0.0310 secs.

===== GET default test =====
GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %

Summary:
  Total:	1.9562 secs.
  Slowest:	0.0330 secs.
  Fastest:	0.0010 secs.
  Average:	0.0061 secs.
  Requests/sec:	10469.5400
  Total Data Received:	2867200 bytes.
  Response Size per Request:	140 bytes.

Status code distribution:
  [200]	20480 responses

Response time histogram:
  0.001 [1]	|
  0.004 [4866]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.007 [10998]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.011 [3520]	|∎∎∎∎∎∎∎∎∎∎∎∎
  0.014 [610]	|∎∎
  0.017 [280]	|∎
  0.020 [117]	|
  0.023 [52]	|
  0.027 [23]	|
  0.030 [12]	|
  0.033 [1]	|

Latency distribution:
  10% in 0.0033 secs.
  25% in 0.0043 secs.
  50% in 0.0056 secs.
  75% in 0.0072 secs.
  90% in 0.0091 secs.
  95% in 0.0107 secs.
  99% in 0.0170 secs.

===== GET stale test =====
GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?stale
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %

Summary:
  Total:	1.8706 secs.
  Slowest:	0.0271 secs.
  Fastest:	0.0011 secs.
  Average:	0.0058 secs.
  Requests/sec:	10948.2819
  Total Data Received:	2867200 bytes.
  Response Size per Request:	140 bytes.

Status code distribution:
  [200]	20480 responses

Response time histogram:
  0.001 [1]	|
  0.004 [3383]	|∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.006 [10080]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.009 [5110]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.011 [1227]	|∎∎∎∎
  0.014 [427]	|∎
  0.017 [141]	|
  0.019 [58]	|
  0.022 [30]	|
  0.025 [14]	|
  0.027 [9]	|

Latency distribution:
  10% in 0.0032 secs.
  25% in 0.0041 secs.
  50% in 0.0054 secs.
  75% in 0.0070 secs.
  90% in 0.0087 secs.
  95% in 0.0103 secs.
  99% in 0.0146 secs.

===== GET consistent test =====
GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?consistent
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %

Summary:
  Total:	1.9989 secs.
  Slowest:	0.0272 secs.
  Fastest:	0.0013 secs.
  Average:	0.0062 secs.
  Requests/sec:	10245.5621
  Total Data Received:	2867200 bytes.
  Response Size per Request:	140 bytes.

Status code distribution:
  [200]	20480 responses

Response time histogram:
  0.001 [1]	|
  0.004 [3176]	|∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.006 [9755]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.009 [5195]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.012 [1505]	|∎∎∎∎∎∎
  0.014 [499]	|∎∎
  0.017 [186]	|
  0.019 [53]	|
  0.022 [34]	|
  0.025 [36]	|
  0.027 [40]	|

Latency distribution:
  10% in 0.0035 secs.
  25% in 0.0044 secs.
  50% in 0.0057 secs.
  75% in 0.0073 secs.
  90% in 0.0094 secs.
  95% in 0.0111 secs.
  99% in 0.0162 secs.