rocky
Version:
Full-featured, middleware-oriented, hackable HTTP and WebSocket proxy
128 lines (111 loc) • 4.21 kB
Markdown
# Benchmarking `rocky`
## Requirements
- Go +1.3
- vegeta - `go get github.com/tsenart/vegeta`
## Running benchmark
```
bash benchmark/run.sh
```
Supported optional arguments:
```
bash benchmark/run.sh [rocky url] [rate] [duration]
```
Example:
```
bash benchmark/run.sh http://rocky.server:8080 200 15s
```
## Results
Using a Macbook Pro i7 2.7 Ghz 16 GB OSX Yosemite and `node.js@4.2.1`
##### Simple forward (100 req/sec)
```
# Running benchmark suite: forward
Requests [total] 1000
Duration [total, attack, wait] 9.994724089s, 9.991463892s, 3.260197ms
Latencies [mean, 50, 95, 99, max] 3.696245ms, 3.39041ms, 7.345854ms, 41.871707ms, 41.871707ms
Bytes In [total, mean] 12000, 12.00
Bytes Out [total, mean] 0, 0.00
Success [ratio] 100.00%
Status Codes [code:count] 200:1000
```
##### Forward and replay to multiple backends (100 req/sec)
```
# Running benchmark suite: replay
Requests [total] 1000
Duration [total, attack, wait] 9.994925269s, 9.990668119s, 4.25715ms
Latencies [mean, 50, 95, 99, max] 4.979603ms, 4.198974ms, 14.343016ms, 48.186129ms, 48.186129ms
Bytes In [total, mean] 12000, 12.00
Bytes Out [total, mean] 0, 0.00
Success [ratio] 100.00%
Status Codes [code:count] 200:1000
```
##### Forward with payload (~2KB) (50 req/sec)
```
# Running benchmark suite: forward with payload
Requests [total] 500
Duration [total, attack, wait] 9.993976759s, 9.980336329s, 13.64043ms
Latencies [mean, 50, 95, 99, max] 24.192313ms, 16.084827ms, 95.600946ms, 145.897666ms, 145.897666ms
Bytes In [total, mean] 6000, 12.00
Bytes Out [total, mean] 861500, 1723.00
Success [ratio] 100.00%
Status Codes [code:count] 200:500
Error Set:
```
##### Replay with payload (~2KB) (50 req/sec)
```
# Running benchmark suite: replay with payload
Requests [total] 500
Duration [total, attack, wait] 9.985169685s, 9.980843808s, 4.325877ms
Latencies [mean, 50, 95, 99, max] 4.933694ms, 4.611819ms, 8.604071ms, 41.105633ms, 41.105633ms
Bytes In [total, mean] 6000, 12.00
Bytes Out [total, mean] 861500, 1723.00
Success [ratio] 100.00%
Status Codes [code:count] 200:500
```
##### Replay with payload to multiple backends (~2KB) (50 req/sec)
```
# Running benchmark suite: replay with payload
Requests [total] 500
Duration [total, attack, wait] 9.987592135s, 9.982661448s, 4.930687ms
Latencies [mean, 50, 95, 99, max] 7.131198ms, 5.255614ms, 29.921801ms, 118.176607ms, 118.176607ms
Bytes In [total, mean] 6000, 12.00
Bytes Out [total, mean] 861500, 1723.00
Success [ratio] 100.00%
Status Codes [code:count] 200:500
```
##### Forward with large payload (~250KB) (50 req/sec)
```
# Running benchmark suite: replay with payload to multiple backends
Requests [total] 500
Duration [total, attack, wait] 9.982329219s, 9.978939543s, 3.389676ms
Latencies [mean, 50, 95, 99, max] 8.205879ms, 5.552973ms, 30.474587ms, 188.612597ms, 188.612597ms
Bytes In [total, mean] 6000, 12.00
Bytes Out [total, mean] 861500, 1723.00
Success [ratio] 100.00%
Status Codes [code:count] 200:500
```
##### Replay with large payload (~250KB) (50 req/sec)
```
# Running benchmark suite: replay-with-payload
Requests [total] 500
Duration [total, attack, wait] 9.978721886s, 9.975644048s, 3.077838ms
Latencies [mean, 50, 95, 99, max] 4.595263ms, 4.008649ms, 11.35459ms, 45.080501ms, 45.080501ms
Bytes In [total, mean] 6962, 13.92
Bytes Out [total, mean] 117091500, 234183.00
Success [ratio] 85.20%
Status Codes [code:count] 200:426 502:74
Error Set:
502 Bad Gateway
```
##### Replay with large payload to multiple backends (~250KB) (50 req/sec)
```
# Running benchmark suite: binary-replay-with-payload
Requests [total] 500
Duration [total, attack, wait] 9.983661865s, 9.979603656s, 4.058209ms
Latencies [mean, 50, 95, 99, max] 5.341988ms, 4.662403ms, 14.595361ms, 46.528611ms, 46.528611ms
Bytes In [total, mean] 6143, 12.29
Bytes Out [total, mean] 117091500, 234183.00
Success [ratio] 97.80%
Status Codes [code:count] 200:489 502:11
Error Set:
502 Bad Gateway
```