2018-05-21 21:13:54 +00:00
|
|
|
|
## Benchmarks
|
|
|
|
|
|
|
|
|
|
The output generated by `curl` uses `curl-format.txt`, present along side this readme.
|
|
|
|
|
|
2018-06-08 20:02:59 +00:00
|
|
|
|
Telegraf is configured with the supplied `telegraf.conf` to capture metrics from fluxd and influxdb using the
|
2018-05-21 21:13:54 +00:00
|
|
|
|
Prometheus `/metrics` HTTP endpoint and machine metrics including CPU usage and disk I/O. Note that `influxd` is running
|
|
|
|
|
on port `8186`, allowing a separate `influxd` on the default port to receive metrics from Telegraf.
|
|
|
|
|
|
|
|
|
|
## Dataset #1
|
|
|
|
|
|
|
|
|
|
| | |
|
|
|
|
|
| ----- | ----- |
|
|
|
|
|
| series | 100,000 |
|
|
|
|
|
| pps | 3,000 |
|
|
|
|
|
| shards | 12 |
|
|
|
|
|
| pps / shard | 250 |
|
|
|
|
|
| total points | 300,000,000 |
|
|
|
|
|
|
|
|
|
|
**pps**: points per series
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Hardware
|
|
|
|
|
|
|
|
|
|
| | |
|
|
|
|
|
| ----- | ----- |
|
|
|
|
|
| AWS instance type | c3.4xlarge |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Generate dataset
|
|
|
|
|
|
|
|
|
|
1. Use [ingen][ingen] to populate a database with data.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
$ ingen -p=250 -t=1000,100 -shards=12 -start-time="2017-11-01T00:00:00Z" -data-path=~/.influxdb/data -meta-path=~/.influxdb/meta
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The previous command will
|
|
|
|
|
|
|
|
|
|
* populate a database named `db` (default),
|
|
|
|
|
* create 100,000 series (1000×100),
|
|
|
|
|
* made up of 2 tag keys (`tag0` and `tag1`) each with 1000 and 100 tag values respectively.
|
|
|
|
|
* 250 points per series, per shard, for a total of 3,000 points per series.
|
|
|
|
|
* Points will start from `2017-11-01 00:00:00 UTC` and
|
|
|
|
|
* span 12 shards.
|
|
|
|
|
|
|
|
|
|
|
2018-06-08 20:02:59 +00:00
|
|
|
|
### Flux queries
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
Query #1
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-02T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and $ > 0}).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 0.138
|
|
|
|
|
size_download: 5800000
|
|
|
|
|
time_total: 7.578
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #2
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-05T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and $ > 0}).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 0.305
|
|
|
|
|
size_download: 5900000
|
|
|
|
|
time_total: 17.909
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #3
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-05T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and $ > 0}).group(by:["tag0"]).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 22.727
|
|
|
|
|
size_download: 60000
|
|
|
|
|
time_total: 22.730
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #4
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-13T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and $ > 0}).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 0.713
|
|
|
|
|
size_download: 5900000
|
|
|
|
|
time_total: 44.159
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #5
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-13T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and $ > 0}).group(by:["tag0"]).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 56.257
|
|
|
|
|
size_download: 60000
|
|
|
|
|
time_total: 56.261
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Dataset #2
|
|
|
|
|
|
|
|
|
|
| | |
|
|
|
|
|
| ----- | ----- |
|
|
|
|
|
| series | 10,000,000 |
|
|
|
|
|
| pps | 1,000 |
|
|
|
|
|
| shards | 4 |
|
|
|
|
|
| pps / shard | 250 |
|
|
|
|
|
| total points | 10,000,000,000 |
|
|
|
|
|
|
|
|
|
|
**pps**: points per series
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Hardware
|
|
|
|
|
|
|
|
|
|
| | |
|
|
|
|
|
| ----- | ----- |
|
|
|
|
|
| AWS instance type | c5.4xlarge |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Generate dataset
|
|
|
|
|
|
|
|
|
|
1. Use [ingen][ingen] to populate a database with data.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
$ ingen -p=250 -t=10000,100,10 -shards=4 -start-time="2017-11-01T00:00:00Z" -data-path=~/.influxdb/data -meta-path=~/.influxdb/meta
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The previous command will
|
|
|
|
|
|
|
|
|
|
* populate a database named `db` (default),
|
|
|
|
|
* create 10,000,000 series (10000×100×10),
|
|
|
|
|
* made up of 3 tag keys (`tag0`, `tag1`, `tag2`) each with 10000, 100 and 10 tag values respectively.
|
|
|
|
|
* 250 points per series, per shard, for a total of 1,000 points per series.
|
|
|
|
|
* Points will start from `2017-11-01 00:00:00 UTC` and
|
|
|
|
|
* span 4 shards.
|
|
|
|
|
|
|
|
|
|
|
2018-06-08 20:02:59 +00:00
|
|
|
|
### Flux queries
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
Query #1
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-05T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and "tag1" == "value00"}).group(by:["tag0"]).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 0.325
|
|
|
|
|
size_download: 7200000
|
|
|
|
|
time_total: 11.437
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #2
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-05T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0" and "tag1" == "value00"}).group(by:["tag0"]).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 13.174
|
|
|
|
|
size_download: 600000
|
|
|
|
|
time_total: 13.215
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #3
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-05T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0"}).group(by:["tag0"]).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 1190.204
|
|
|
|
|
size_download: 620000
|
|
|
|
|
time_total: 1190.244
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Query #4
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
HOST=localhost:8093; curl -w "@curl-format.txt" -H 'Accept: text/plain' -o /dev/null -s http://${HOST}/query \
|
2018-08-22 15:53:11 +00:00
|
|
|
|
--data-urlencode 'q=from(bucket:"db/autogen").range(start:2017-11-01T00:00:00Z, stop:2017-11-05T00:00:00Z).filter(exp:{"_measurement" == "m0" and "_field" == "v0"}).sum()'
|
2018-05-21 21:13:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time_starttransfer: 23.975
|
|
|
|
|
size_download: 720000000
|
|
|
|
|
time_total: 803.254
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-06-08 20:02:59 +00:00
|
|
|
|
[ingen]: https://github.com/influxdata/ingen
|