github.com/marwan-at-work/consul@v1.4.5/bench/results-0.2.md (about) 1 # Consul Benchmark Results 2 3 As part of a benchmark, we started a 4 node DigitalOcean cluster to benchmark. 4 There are 3 servers, meaning writes must commit to at least 2 servers. 5 The cluster uses the 16GB DigitalOcean droplet which has the following specs: 6 7 * 8 CPU Cores, 2Ghz 8 * 16GB RAM 9 * 160GB SSD disk 10 * 1Gbps NIC 11 12 We used `bonnie++` to benchmark the disk, and the key metrics are: 13 14 * 188MB/s sequential write 15 * 86MB/s sequential read-write-flush 16 * 2636 random seeks per second 17 18 # Output 19 20 Below is the output for a test run on a benchmark cluster. We ran the benchmark 21 several times to warm up the nodes, and this is just a single representative sample. 22 23 Note, that a single worker was running the benchmark. This means the "stale" test is 24 not representative of total throughput, as the client was only routing to a single server. 25 26 ===== PUT test ===== 27 GOMAXPROCS=4 boom -m PUT -d "74a31e96-1d0f-4fa7-aa14-7212a326986e" -n 20480 -c 64 http://localhost:8500/v1/kv/bench 28 20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 % 29 30 Summary: 31 Total: 19.4302 secs. 32 Slowest: 0.1715 secs. 33 Fastest: 0.0157 secs. 34 Average: 0.0606 secs. 35 Requests/sec: 1054.0313 36 Total Data Received: 102400 bytes. 37 Response Size per Request: 5 bytes. 38 39 Status code distribution: 40 [200] 20480 responses 41 42 Response time histogram: 43 0.016 [1] | 44 0.031 [233] |∎ 45 0.047 [4120] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 46 0.062 [8079] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 47 0.078 [5082] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 48 0.094 [2045] |∎∎∎∎∎∎∎∎∎∎ 49 0.109 [656] |∎∎∎ 50 0.125 [200] | 51 0.140 [12] | 52 0.156 [31] | 53 0.172 [21] | 54 55 Latency distribution: 56 10% in 0.0416 secs. 57 25% in 0.0484 secs. 58 50% in 0.0579 secs. 59 75% in 0.0697 secs. 60 90% in 0.0835 secs. 61 95% in 0.0919 secs. 62 99% in 0.1113 secs. 63 64 ===== GET default test ===== 65 GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench 66 20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 % 67 68 Summary: 69 Total: 9.6804 secs. 70 Slowest: 0.0830 secs. 71 Fastest: 0.0023 secs. 72 Average: 0.0302 secs. 73 Requests/sec: 2115.6096 74 Total Data Received: 2560000 bytes. 75 Response Size per Request: 125 bytes. 76 77 Status code distribution: 78 [200] 20480 responses 79 80 Response time histogram: 81 0.002 [1] | 82 0.010 [143] | 83 0.018 [1666] |∎∎∎∎∎∎∎∎∎ 84 0.026 [6009] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 85 0.035 [6732] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 86 0.043 [3857] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 87 0.051 [1389] |∎∎∎∎∎∎∎∎ 88 0.059 [459] |∎∎ 89 0.067 [154] | 90 0.075 [53] | 91 0.083 [17] | 92 93 Latency distribution: 94 10% in 0.0189 secs. 95 25% in 0.0233 secs. 96 50% in 0.0291 secs. 97 75% in 0.0358 secs. 98 90% in 0.0427 secs. 99 95% in 0.0476 secs. 100 99% in 0.0597 secs. 101 102 ===== GET stale test ===== 103 GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?stale 104 20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 % 105 106 Summary: 107 Total: 10.3082 secs. 108 Slowest: 0.0972 secs. 109 Fastest: 0.0015 secs. 110 Average: 0.0322 secs. 111 Requests/sec: 1986.7714 112 Total Data Received: 2560000 bytes. 113 Response Size per Request: 125 bytes. 114 115 Status code distribution: 116 [200] 20480 responses 117 118 Response time histogram: 119 0.002 [1] | 120 0.011 [320] |∎ 121 0.021 [2558] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 122 0.030 [6247] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 123 0.040 [6895] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 124 0.049 [3174] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 125 0.059 [971] |∎∎∎∎∎ 126 0.068 [249] |∎ 127 0.078 [52] | 128 0.088 [11] | 129 0.097 [2] | 130 131 Latency distribution: 132 10% in 0.0187 secs. 133 25% in 0.0246 secs. 134 50% in 0.0317 secs. 135 75% in 0.0387 secs. 136 90% in 0.0461 secs. 137 95% in 0.0511 secs. 138 99% in 0.0618 secs. 139 140 ===== GET consistent test ===== 141 GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?consistent 142 20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 % 143 144 Summary: 145 Total: 10.4835 secs. 146 Slowest: 0.0991 secs. 147 Fastest: 0.0024 secs. 148 Average: 0.0327 secs. 149 Requests/sec: 1953.5549 150 Total Data Received: 2560000 bytes. 151 Response Size per Request: 125 bytes. 152 153 Status code distribution: 154 [200] 20480 responses 155 156 Response time histogram: 157 0.002 [1] | 158 0.012 [137] | 159 0.022 [2405] |∎∎∎∎∎∎∎∎∎∎∎∎ 160 0.031 [7754] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 161 0.041 [6382] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 162 0.051 [2629] |∎∎∎∎∎∎∎∎∎∎∎∎∎ 163 0.060 [826] |∎∎∎∎ 164 0.070 [245] |∎ 165 0.080 [81] | 166 0.089 [17] | 167 0.099 [3] | 168 169 Latency distribution: 170 10% in 0.0208 secs. 171 25% in 0.0254 secs. 172 50% in 0.0314 secs. 173 75% in 0.0384 secs. 174 90% in 0.0463 secs. 175 95% in 0.0518 secs. 176 99% in 0.0645 secs. 177