mirror of https://github.com/hashicorp/consul
178 lines
6.1 KiB
Markdown
178 lines
6.1 KiB
Markdown
|
# 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 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
|
||
|
|
||
|
Summary:
|
||
|
Total: 19.4302 secs.
|
||
|
Slowest: 0.1715 secs.
|
||
|
Fastest: 0.0157 secs.
|
||
|
Average: 0.0606 secs.
|
||
|
Requests/sec: 1054.0313
|
||
|
Total Data Received: 102400 bytes.
|
||
|
Response Size per Request: 5 bytes.
|
||
|
|
||
|
Status code distribution:
|
||
|
[200] 20480 responses
|
||
|
|
||
|
Response time histogram:
|
||
|
0.016 [1] |
|
||
|
0.031 [233] |∎
|
||
|
0.047 [4120] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.062 [8079] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.078 [5082] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.094 [2045] |∎∎∎∎∎∎∎∎∎∎
|
||
|
0.109 [656] |∎∎∎
|
||
|
0.125 [200] |
|
||
|
0.140 [12] |
|
||
|
0.156 [31] |
|
||
|
0.172 [21] |
|
||
|
|
||
|
Latency distribution:
|
||
|
10% in 0.0416 secs.
|
||
|
25% in 0.0484 secs.
|
||
|
50% in 0.0579 secs.
|
||
|
75% in 0.0697 secs.
|
||
|
90% in 0.0835 secs.
|
||
|
95% in 0.0919 secs.
|
||
|
99% in 0.1113 secs.
|
||
|
|
||
|
===== GET default test =====
|
||
|
GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench
|
||
|
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
|
||
|
|
||
|
Summary:
|
||
|
Total: 9.6804 secs.
|
||
|
Slowest: 0.0830 secs.
|
||
|
Fastest: 0.0023 secs.
|
||
|
Average: 0.0302 secs.
|
||
|
Requests/sec: 2115.6096
|
||
|
Total Data Received: 2560000 bytes.
|
||
|
Response Size per Request: 125 bytes.
|
||
|
|
||
|
Status code distribution:
|
||
|
[200] 20480 responses
|
||
|
|
||
|
Response time histogram:
|
||
|
0.002 [1] |
|
||
|
0.010 [143] |
|
||
|
0.018 [1666] |∎∎∎∎∎∎∎∎∎
|
||
|
0.026 [6009] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.035 [6732] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.043 [3857] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.051 [1389] |∎∎∎∎∎∎∎∎
|
||
|
0.059 [459] |∎∎
|
||
|
0.067 [154] |
|
||
|
0.075 [53] |
|
||
|
0.083 [17] |
|
||
|
|
||
|
Latency distribution:
|
||
|
10% in 0.0189 secs.
|
||
|
25% in 0.0233 secs.
|
||
|
50% in 0.0291 secs.
|
||
|
75% in 0.0358 secs.
|
||
|
90% in 0.0427 secs.
|
||
|
95% in 0.0476 secs.
|
||
|
99% in 0.0597 secs.
|
||
|
|
||
|
===== GET stale test =====
|
||
|
GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?stale
|
||
|
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
|
||
|
|
||
|
Summary:
|
||
|
Total: 10.3082 secs.
|
||
|
Slowest: 0.0972 secs.
|
||
|
Fastest: 0.0015 secs.
|
||
|
Average: 0.0322 secs.
|
||
|
Requests/sec: 1986.7714
|
||
|
Total Data Received: 2560000 bytes.
|
||
|
Response Size per Request: 125 bytes.
|
||
|
|
||
|
Status code distribution:
|
||
|
[200] 20480 responses
|
||
|
|
||
|
Response time histogram:
|
||
|
0.002 [1] |
|
||
|
0.011 [320] |∎
|
||
|
0.021 [2558] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.030 [6247] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.040 [6895] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.049 [3174] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.059 [971] |∎∎∎∎∎
|
||
|
0.068 [249] |∎
|
||
|
0.078 [52] |
|
||
|
0.088 [11] |
|
||
|
0.097 [2] |
|
||
|
|
||
|
Latency distribution:
|
||
|
10% in 0.0187 secs.
|
||
|
25% in 0.0246 secs.
|
||
|
50% in 0.0317 secs.
|
||
|
75% in 0.0387 secs.
|
||
|
90% in 0.0461 secs.
|
||
|
95% in 0.0511 secs.
|
||
|
99% in 0.0618 secs.
|
||
|
|
||
|
===== GET consistent test =====
|
||
|
GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?consistent
|
||
|
20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
|
||
|
|
||
|
Summary:
|
||
|
Total: 10.4835 secs.
|
||
|
Slowest: 0.0991 secs.
|
||
|
Fastest: 0.0024 secs.
|
||
|
Average: 0.0327 secs.
|
||
|
Requests/sec: 1953.5549
|
||
|
Total Data Received: 2560000 bytes.
|
||
|
Response Size per Request: 125 bytes.
|
||
|
|
||
|
Status code distribution:
|
||
|
[200] 20480 responses
|
||
|
|
||
|
Response time histogram:
|
||
|
0.002 [1] |
|
||
|
0.012 [137] |
|
||
|
0.022 [2405] |∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.031 [7754] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.041 [6382] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.051 [2629] |∎∎∎∎∎∎∎∎∎∎∎∎∎
|
||
|
0.060 [826] |∎∎∎∎
|
||
|
0.070 [245] |∎
|
||
|
0.080 [81] |
|
||
|
0.089 [17] |
|
||
|
0.099 [3] |
|
||
|
|
||
|
Latency distribution:
|
||
|
10% in 0.0208 secs.
|
||
|
25% in 0.0254 secs.
|
||
|
50% in 0.0314 secs.
|
||
|
75% in 0.0384 secs.
|
||
|
90% in 0.0463 secs.
|
||
|
95% in 0.0518 secs.
|
||
|
99% in 0.0645 secs.
|
||
|
|