mirror of https://github.com/hashicorp/consul
5.9 KiB
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.