Skip to content

Performance Benchmarks

Proof of the pudding for scalability of Obsrv

Config NameConfig Value
Number of Nodes4
Node Size4 core, 16 Gb
PV size1 TB
Installation ModeObsrv with monitoring and real-time storage

Processing benchmark is independent on number of datasets created, hence the strategy is to test with volume with all configurations enabled. Disabling any configuration is going to improve throughput

  1. Dedup turned on
  2. De-normalization configured on 2 master datasets
  3. Transformations configured on 2 fields
  4. Event size of 1 kb
Flink ConfigurationEvents per MinEvents per hourEvents per Day
1 CPU, 1GB, 1 task slot, 1 parallelism~ 13k | 13 Mb~ 750k | 780Mb~ 18Million | 18Gb
2 CPU, 2GB, 2 task slot, 2 parallelism~ 30k | 30 Mb~ 1.8Million | 1.8Gb~ 40Million | 40Gb
4 CPU, 4Gb, 4 task slots, 4 parallelismIn ProgressIn ProgressIn Progress

To ensure there is no data loss across obsrv pipeline all data is backuped to object store using S3. Following are the benchmark results of Secor backups in real-time

  1. Total Secor processes - 7
  2. Total CPU Allocated - 1.5 cpu
  3. Event size of 1 kb
Events per MinEvents per hourEvents per DayEvents per process
~ 1.6 Million | 1.6Mb~ 100 Million | 100Gb~ 2.4 Billion | 2.4Tb~ 300 Million | 300Gb

Druid indexing benchmark is dependent on number of datasets created and number of aggregate tables. This benchmark is done with minimal configuration only and can actually linearly scale with the number of CPUs provided

Config NameConfig Value
Process NameDruid Indexer
CPU0.5
Direct Memory2Gi
Heap9Gi
GlobalIngestionHeap8Gi
Workers Count30
Pod Memory11Gi
Num of TablesEvents per MinEvents per hourEvents per Day
1~ 80k | 80 Mb~ 4.8 Million | 4.8 Gb~ 110 Million | 110 Gb
2~ 40k | 40 Mb~ 2.4 Million | 2.4 Gb~ 55 Million | 55 Gb
3In ProgressIn ProgressIn Progress
4In ProgressIn ProgressIn Progress
5~ 35k | 35 Mb~ 2.1 Million | 2.1 Gb~ 50 Million | 50 Gb

Similar to processing, query benchmark is dependent on the volume of data but not on the number of datasets (or tables) created. Query performance will increase linearly with the amount of CPU/Memory assigned to the Druid Historical process

Config NameConfig Value
Process NameDruid Historical
CPU2
Direct Memory4608Mi
Heap1Gi
Pod Memory5700Mi
Segment Size4.77Gi
No. of rows per segment5000000
processing.numThreads2
processing.numMergeBuffers6
Concurrency100
QueryQuery IntervalThroughputResponse Times (in ms)
Group by on Raw Data 1 Day25 r/s

Avg | Min | Max | 90th

392 | 80 | 686 | 472

Group by on Raw Data 7 Days4 r/s

Avg | Min | Max | 90th

4933 | 1277 | 8382 | 5154

Group by on Raw Data30 DaysIn ProgressIn Progress
QueryQuery IntervalThroughputResponse Times (in ms)
Group by on Aggregate Data 1 DayIn ProgressIn Progress
Group by on Aggregate Data 7 DaysIn ProgressIn Progress
Group by on Aggregate Data 30 DaysIn ProgressIn Progress