Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimescaleDB et InfluxDB comparati sunt articulus priorem in schedula cum decies centena millia puncta ad 40K seriem temporis unicam pertinentes.

Ante paucos annos Zabbix era erat. Uniuscuiusque metallicus nudum servans non plus quam paucos indices habebat - CPU usus, RAM usus, orbis usus et usus retis. Hoc modo, metrici ex millibus servientium in quadraginta milia temporum singularium aptare possunt, et Zabbix MySQL uti temporis seriei notitia:) uti potest.

solum currently node_exporter cum configurationibus defaltis praebet super 500 metrics in exercitu mediocris. Multa sunt exportatores pro variis databases, ministris telae, systematis ferramentis, etc. Omnes varias metri utiles praebent. Omnis magis ac magis applicationes variis indicibus sibi incipiunt. Est Kubernetes cum racemis et siliquis, quae multa metrice exponunt. Id evenit in servientibus ut mille millia singularium metri per exercitum aperiant. Itaque unica 40K temporis series nulla iam potentia alta est. Amet decet et debet facile ab aliquo moderno TSDB in uno servo tractari.

Quid est numerus singularium temporis seriei in momento? Probabiliter 400K vel 4M? Vel 40m? Cum his numeris moderni TSDBs comparemus.

Probatio installing

TSBS optimum est instrumentum benchmarking pro TSDBs. Permittit ut arbitrarium numerum metri generare transeundo seriei temporis debitam per 10 - flag divisam -scale (pristini -scale-var). 10 numerus mensurarum (metricorum) generatur in unaquaque militia seu servo. Sequentes datasets TSBS ad probationem utentes generatae sunt:

  • 400K unica series temporis, 60 secunda interstitium inter puncta data, data plena spatium 3 dierum, ~1.7B numerus punctorum notitiarum totalis.
  • 4M series temporis unica, DC interualla secunda, data palmorum 600 dierum plena, ~3B numerus punctorum notitiarum totalis.
  • 40M unica temporis series, horae spatium 1, notitia palmorum 3 dierum plenus, ~2.8B numerus punctorum notitiarum totalis.

Cliens et cultor currebant in instantiis dedicatis n1-vexillum-16 in Google nubes. Hae instantiae conformationes habebant sequentes;

  • vCPUs: 16
  • Ram 60 MB
  • Repono: Latin 1TB HDD. Praebet 120 Mbps legere/scribere throughput, 750 legere operationes per secundam et 1,5K scribens per secundam.

TSDBs imagines ex officina publica extracti sunt et cum sequentibus configurationibus concurrunt;

  • VictoriaMetrics:

    docker run -it --rm -v /mnt/disks/storage/vmetrics-data:/victoria-metrics-data -p 8080:8080 valyala/victoria-metrics

  • InfluxDB (-e) valores ad altam potentiam sustinendam requiruntur documentum):

    docker run -it --rm -p 8086:8086 
    -e INFLUXDB_DATA_MAX_VALUES_PER_TAG=4000000 
    -e INFLUXDB_DATA_CACHE_MAX_MEMORY_SIZE=100g 
    -e INFLUXDB_DATA_MAX_SERIES_PER_DATABASE=0 
    -v /mnt/disks/storage/influx-data:/var/lib/influxdb influxdb

  • TimescaleDB (configurationis ex quod fasciculus);

MEM=`free -m | grep "Mem" | awk ‘{print $7}’`
let "SHARED=$MEM/4"
let "CACHE=2*$MEM/3"
let "WORK=($MEM-$SHARED)/30"
let "MAINT=$MEM/16"
let "WAL=$MEM/16"
docker run -it — rm -p 5432:5432 
--shm-size=${SHARED}MB 
-v /mnt/disks/storage/timescaledb-data:/var/lib/postgresql/data 
timescale/timescaledb:latest-pg10 postgres 
-cmax_wal_size=${WAL}MB 
-clog_line_prefix="%m [%p]: [%x] %u@%d" 
-clogging_collector=off 
-csynchronous_commit=off 
-cshared_buffers=${SHARED}MB 
-ceffective_cache_size=${CACHE}MB 
-cwork_mem=${WORK}MB 
-cmaintenance_work_mem=${MAINT}MB 
-cmax_files_per_process=100

Data oneratus cum 16 filis parallelis curritur.

Articulus hic tantum proventus continet pro benchmarks inserendis. Eventus probationis selectivi in ​​articulo separato evulgabitur.

400K unique temporis series

In primis elementis simplicibus - 400K. Probatio eventus:

  • VictoriaMetrics: 2,6M puncta per secundam data; RAM usus: 3 GB; finalis data size on disk: 965 MB
  • InfluxDB: 1.2M puncta data per secundam; RAM usus: 8.5 GB; finalis notitia amplitudo in disco: 1.6 GB
  • Timescale: 849K puncta data per secundam; RAM usus: 2,5 GB; finalis notitia amplitudo in disco: L GB

Ut videre potes ex effectibus supra, VictoriaMetrics in insertione perficiendi et compressionis rationem vincit. Timeline in RAM usu vincit, sed multum spatii orbis utitur - 29 bytes per punctum data.

Infra sunt CPU graphi usus pro singulis TSDBs in Probatio:

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius screenshot: VictoriaMetrics - CPU onus in insertione tium singulare 400K metricum.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: InfluxDB - CPU onus inter insertionem tium pro singulari metrico 400K.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: TimescaleDB - CPU onus inter insertionem tium singulare metricum de 400K.

VictoriaMetrics omnibus vCPUs in promptu utitur, dum InfluxDB laborat ~2 e 16 vCPUs.

Timescale tantum utitur 3-4 ex 16 vCPUs. Proportiones altae iowait et systematis in grapho TimescaleDB timescales indicantes bottleneck in input/output (I/O) subsystem. Intueamur disco Sed usus graphs:

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius screenshot: VictoriaMetrics - Disk Bandwidth Ritus in insertione Test pro Unique Metrics 400K.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Supra tortor est: InfluxDB - Disk Bandwidth Ritus in Insertione Test pro Unique Metrics 400K.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Supra tortor est: TimescaleDB - Disk Bandwidth Ritus in Insertione Test pro Unique Metrics 400K.

VictoriaMetrics records data at 20 Mbps with apices up to 45 Mbps. Cacumina correspondent magna parte mergers in arbore Ngo.

InfluxDB scribit data in 160 MB/s, dum 1 TB coegi finiri debet scribe throughput 120 MB/s.

TimescaleDB limitatur ad scribendum perputum 120 Mbps, sed interdum hunc limitem frangit et 220 Mbps in apicem valorum pervenit. Haec cacumina vallibus CPU utendo in superiore graphe insufficientes respondent.

Intueamur input/output (I/O) usus graphs:

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius screenshot: VictoriaMetrics - Insert test I/O usus pro 400K singularibus metricis.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: InfluxDB - Insert test I/O usus pro 400K singularibus metricis.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius screenshot: TimescaleDB - Insert test I/O usus pro 400K singularibus metricis.

Perspicuum est TimescaleDB terminum I/O attingere, quare reliquis 12 vCPUs uti non potest.

Unicum temporis series 4M

4M temporis series parum provocat. Nostri autem competitores hanc nito feliciter transeunt. Probatio eventus:

  • VictoriaMetrics: 2,2M puncta per secundam data; RAM usus: 6 GB; notitia finalis magnitudinis in disco: 3 GB.
  • InfluxDB: per secunda puncta data 330K; RAM usus: 20,5 GB; notitia finalis magnitudinis in disco: 18,4 GB.
  • TimescaleDB: 480K puncta data per secunda; RAM usus: 2,5 GB; finalis data size on disk: 52 GB.

InfluxDB effectus decidit ab 1,2M puncta data per secundam ad seriem temporis 400K ad 330K data puncta per secundam ad 4M temporis seriem. Hoc notabile est damnum praestandi aliis competitoribus comparari. Intueamur in CPU graphi usu ut radicem huius damni cognoscamus;

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Antea est screenshot: VictoriaMetrics - CPU usus in insertione test pro unica serie 4M temporis.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: InfluxDB - CPU usus in insertione tium singularum 4M temporis seriei.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: TimescaleDB - CPU usus in insertione tium unicae 4M temporis seriei.

VictoriaMetrics paene omnibus utitur potestate processus unitatis (CPU). Gutta in fine respondet reliquis LSM migrationibus postquam omnia notitia inscripta est.

InfluxDB tantum 8 e 16 vCPUs utitur, dum TimsecaleDB utitur 4 di 16 vCPUs. Quid habent graphs commune? Princeps participes iowaitquod iterum indicat I/O bottleneck.

TimescaleDB habet excelsum participes system. Ponamus altam potentiam in multis consecuta ratio vocat vel plures minor pagina vitia.

Intueamur graphs throughput orbis:

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est screenshot: VictoriaMetrics - Sed utens disco ad 4M singularem metricam inserere.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Supra tortor est: InfluxDB - Sed utendo disco ad 4M singularem metricam inserere.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: TimescaleDB - Sed utens disco ad 4M singularem metricam inserere.

VictoriaMetrics terminum 120 MB/s ad apicem attigit, dum mediocris celeritas scribenda 40 MB/s erat. Veri simile est complures graves LSM fusiones in apice factas esse.

InfluxDB iterum exprimit medium scribe perput de 200 MB/s cum iugis usque ad 340 MB/s in orbe cum scriptione limitis 120 MB/s :)

TimescaleDB orbis iam non limitatur. Videtur quod limitari ab aliquo ad aliam proportionem ad altum системной CPU onere.

Intueamur IO graphs usus:

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Supra screenshot: VictoriaMetrics - Using I/O per insertionem test unicam 4M temporis seriem.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Superius est tortor: InfluxDB - Usus I/O in insertione test unica 4M temporis seriei.

Summus perficientur TSDB Probatio VictoriaMetrics vs TimescaleDB vs InfluxDB

Supra screenshot: TimescaleDB - I/O usus in insertione test unica 4M temporis seriei.

IO exemplaria usus speculantur illae orbis band - InfluxDB est IO limitata, dum VictoriaMetrics et TimescaleDB facultates IO parcunt.

40M unique temporis series

40M series unica temporis nimis magna erat pro InfluxDB :)

Probatio eventus:

  • VictoriaMetrics: 1,7M puncta per secundam data; RAM usus: 29 GB; Orbis tractus usus: 17 GB.
  • InfluxDB: Non perfecit quia plus quam 60GB de RAM requirebat.
  • TimescaleDB: 330K data puncta per alterum, RAM usus: 2,5 GB; Orbis tractus usus: 84GB.

TimescaleDB usus egregie ostendit humilem et stabilem RAM apud 2,5 GB - eandem ac singularem 4M et 400K metricam.

VictoriaMetrics lente ascendebat ad rate of 100k puncta per secundam data, donec omnia nomina metrica 40M tagged procederent. Inde per secundo puncta data 1,5-2,0M suspensa insertionem consecuta est, ergo effectus finalis 1,7M puncta data secundo per.

Graphiae 40M series unicae temporis similes sunt graphis pro 4M seriei temporis singulari, ut eas omittamus.

Inventiones

  • Moderni TSDBs capaces sunt processus inserendi pro millions seriei temporis singularis in uno servo. In proximo articulo, probabimus quomodo bene TSDBs electionem exerceat per decies centena milia unius temporis seriei.
  • Usus CPU insufficiens plerumque indicat an I/O bottleneck. Indicare etiam potest interclusionem nimis crassam esse, paucis tantum stamina ad tempus currere posse.
  • The I/O bottleneck existit, praesertim in non-SSD repositionis sicut nubes praebentium' virtualised cogitationes obstructionum.
  • VictoriaMetrics optimam optimam praebet pro tardus, humilis I/O repono. Ratio compressionis optimam celeritatem praebet et optimam.

download VictoriaMetrics unius servi imago et in notitia experiri. In binarii correspondentes praesto est stabilis GitHub.

Plura de VictoriaMetrics in hac lege articulus.

Renovatio: editi articulus comparet inserta observantia VictoriaMetrics cum InfluxDB cum reproducibilibus eventibus.

Renovatio # II: Lege etiam InfluxDB vs TimescaleDB.

Renovatio #3: VictoriaMetrics nunc aperta fons est!

Curabitur telegraphum: https://t.me/VictoriaMetrics_ru1

Source: www.habr.com

Add a comment