Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimescaleDB og InfluxDB voru bornar saman í Fyrri grein á gagnasafni með milljarði gagnapunkta sem tilheyra 40K einstökum tímaröðum.

Fyrir nokkrum árum var tímabil Zabbix. Hver ber málmþjónn hafði ekki meira en nokkra vísbendingar - CPU notkun, vinnsluminni notkun, diskanotkun og netnotkun. Þannig geta mæligildi frá þúsundum netþjóna passað inn í 40 þúsund einstaka tímaraðir og Zabbix getur notað MySQL sem stuðning fyrir tímaraðargögn :)

Eins og er hnúta_útflytjandi með sjálfgefnum stillingum veitir yfir 500 mælikvarða á meðalhýsingaraðila. Það eru margir útflytjendur fyrir ýmsa gagnagrunna, vefþjóna, vélbúnaðarkerfi o.s.frv. Öll bjóða þeir upp á margvíslega gagnlega mælikvarða. Allt fleiri og fleiri umsóknir byrja að setja ýmsar vísbendingar fyrir sig. Það er Kubernetes með þyrpingum og fræbelg sem afhjúpa margar mælikvarða. Þetta leiðir til þess að netþjónar afhjúpa þúsundir einstakra mælikvarða á hvern gestgjafa. Þannig að hin einstaka 40K tímaröð er ekki lengur aflmikil. Það er að verða almennt og ætti að vera auðvelt að meðhöndla það af hvaða nútíma TSDB sem er á einum netþjóni.

Hver er mikill fjöldi einstaka tímaraðir í augnablikinu? Sennilega 400K eða 4M? Eða 40m? Við skulum bera saman nútíma TSDB við þessar tölur.

Að setja upp viðmið

TSBS er frábært viðmiðunartæki fyrir TSDBs. Það gerir þér kleift að búa til handahófskenndan fjölda mæligilda með því að senda nauðsynlegan fjölda tímaraðir deilt með 10 - fána -stærð (fyrrverandi -scale-var). 10 er fjöldi mælinga (mælinga) sem myndast á hverjum hýsil eða netþjóni. Eftirfarandi gagnasöfn voru mynduð með TSBS fyrir viðmiðið:

  • 400K einstök tímaröð, 60 sekúndna bil á milli gagnapunkta, gögn spanna heila 3 daga, ~1.7B heildarfjöldi gagnapunkta.
  • 4M einstök tímaröð, 600 sekúndna bil, gögn spanna 3 heila daga, ~1.7B heildarfjöldi gagnapunkta.
  • 40M einstök tímaröð, 1 klst. bil, gögn spanna 3 heila daga, ~2.8B heildarfjöldi gagnapunkta.

Biðlarinn og þjónninn voru í gangi á sérstökum tilfellum n1-staðall-16 í Google skýi. Þessi tilvik voru með eftirfarandi stillingar:

  • vCPUs: 16
  • Vinnsluminni: 60 GB
  • Geymsla: Venjulegur 1TB HDD. Það veitir 120 Mbps les-/skrifafköst, 750 lestraraðgerðir á sekúndu og 1,5K skrif á sekúndu.

TSDBs voru dregin út úr opinberum docker myndum og keyrðar í docker með eftirfarandi stillingum:

  • VictoriaMetrics:

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

  • InfluxDB (-e) gildi eru nauðsynleg til að styðja við mikið afl. Sjá nánar í skjöl):

    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 (stilling tekin úr af þessu skrá):

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

Gagnahleðslan var keyrð með 16 samhliða þráðum.

Þessi grein inniheldur aðeins niðurstöður fyrir innsetningarviðmið. Niðurstöður sértækrar viðmiðunar verða birtar í sérstakri grein.

400K einstök tímaröð

Byrjum á einföldum þáttum - 400K. Niðurstöður viðmiðunar:

  • VictoriaMetrics: 2,6M gagnapunktar á sekúndu; Notkun vinnsluminni: 3 GB; endanleg gagnastærð á diski: 965 MB
  • InfluxDB: 1.2M gagnapunktar á sekúndu; Notkun vinnsluminni: 8.5 GB; endanleg gagnastærð á diski: 1.6 GB
  • Tímakvarði: 849K gagnapunktar á sekúndu; Notkun vinnsluminni: 2,5 GB; endanleg gagnastærð á diski: 50 GB

Eins og þú sérð af niðurstöðunum hér að ofan vinnur VictoriaMetrics í innsetningarafköstum og þjöppunarhlutfalli. Tímalína vinnur í vinnsluminni notkun, en hún notar mikið pláss - 29 bæti á hvern gagnapunkt.

Hér að neðan eru línurit CPU notkunar fyrir hverja TSDB við viðmiðið:

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: VictoriaMetrics - CPU álag við innsetningarpróf fyrir einstakt 400K mæligildi.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: InfluxDB - CPU álag við innsetningarpróf fyrir einstakt mæligildi 400K.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: TimescaleDB - CPU hleðsla við innsetningarpróf fyrir einstakt mæligildi upp á 400K.

VictoriaMetrics notar alla tiltæka vCPU, en InfluxDB vannýtir ~2 af 16 vCPUs.

Tímakvarði notar aðeins 3-4 af 16 vCPUs. Hátt hlutfall af iowait og kerfi í TimescaleDB tímakvarða línuritinu gefa til kynna flöskuháls í inntak/úttak (I/O) undirkerfinu. Við skulum skoða línurit fyrir notkun bandbreiddar disks:

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: VictoriaMetrics - Disk Bandwidth Usage in Insertion Test for Unique Metrics 400K.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: InfluxDB - Disk Bandwidth Usage on Insertion Test for Unique Metrics 400K.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: TimescaleDB - Disk Bandwidth Usage on Insertion Test for Unique Metrics 400K.

VictoriaMetrics skráir gögn á 20 Mbps með toppum allt að 45 Mbps. Toppar samsvara stórum hlutasamruna í trénu Félagasamtök.

InfluxDB skrifar gögn á 160 MB/s, en 1 TB drif ætti að takmarka skrifafköst 120 MB/s.

TimescaleDB takmarkast við skrifafköst upp á 120 Mbps, en stundum brýtur það þessi mörk og nær 220 Mbps í hámarksgildum. Þessir toppar samsvara dölum ófullnægjandi CPU nýtingar í fyrra grafi.

Við skulum skoða inntak/úttak (I/O) notkunargrafina:

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: VictoriaMetrics - Settu inn próf I/O notkun fyrir 400K einstaka mælikvarða.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: InfluxDB - Settu inn próf I/O notkun fyrir 400K einstaka mælikvarða.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: TimescaleDB - Settu inn próf I/O notkun fyrir 400K einstaka mælikvarða.

Það er nú ljóst að TimescaleDB er að ná I/O mörkum sínum, þannig að það getur ekki notað 12 vCPUs sem eftir eru.

4M einstök tímaröð

4M tímaraðir líta svolítið krefjandi út. En keppendur okkar standast þetta próf með góðum árangri. Niðurstöður viðmiðunar:

  • VictoriaMetrics: 2,2M gagnapunktar á sekúndu; Notkun vinnsluminni: 6 GB; endanleg gagnastærð á diski: 3 GB.
  • InfluxDB: 330K gagnapunktar á sekúndu; Notkun vinnsluminni: 20,5 GB; endanleg gagnastærð á diski: 18,4 GB.
  • TimescaleDB: 480K gagnapunktar á sekúndu; Notkun vinnsluminni: 2,5 GB; endanleg gagnastærð á diski: 52 GB.

Frammistaða InfluxDB lækkaði úr 1,2M gagnapunktum á sekúndu fyrir 400K tímaröð í 330K gagnapunkta á sekúndu fyrir 4M tímaröð. Þetta er verulegt frammistöðutap miðað við aðra keppendur. Við skulum skoða línurit CPU-notkunar til að skilja undirrót þessa taps:

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: VictoriaMetrics - CPU notkun við innsetningarpróf fyrir einstaka 4M tímaröð.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: InfluxDB - CPU notkun við innsetningarpróf fyrir einstaka 4M tímaraðir.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: TimescaleDB - CPU notkun við innsetningarpróf fyrir einstaka 4M tímaröð.

VictoriaMetrics notar næstum allt afl vinnslueininga (CPU). Fallið í lokin samsvarar þeim LSM sameiningum sem eftir eru eftir að öll gögnin hafa verið sett inn.

InfluxDB notar aðeins 8 af 16 vCPUs en TimsecaleDB notar 4 af 16 vCPUs. Hvað eiga línurit þeirra sameiginlegt? Hátt hlutfall iowait, sem aftur gefur til kynna I/O flöskuháls.

TimescaleDB er með hátt hlutfall system. Við gerum ráð fyrir að mikill kraftur hafi leitt til margra kerfiskalla eða margra smávægilegar síðuvillur.

Við skulum skoða línurit um afköst disksins:

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: VictoriaMetrics - Notkun bandbreiddar disks til að setja inn 4M einstaka mælikvarða.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: InfluxDB - Notar bandbreidd disks til að setja inn 4M einstaka mælikvarða.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: TimescaleDB - Notar bandbreidd disks til að setja inn 4M einstaka mælikvarða.

VictoriaMetrics náði hámarki upp á 120 MB/s á hámarki, en meðalskrifhraði var 40 MB/s. Líklegt er að nokkrir þungir LSM samrunur hafi verið gerðir á hámarki.

InfluxDB kreistir aftur út meðalskrifafköst upp á 200 MB/s með toppum allt að 340 MB/s á diski með skriftakmörk upp á 120 MB/s :)

TimescaleDB er ekki lengur takmarkaður diskur. Það virðist takmarkast af einhverju öðru sem tengist háu hlutfalli системной CPU álag.

Við skulum skoða IO notkunargrafin:

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: VictoriaMetrics - Notkun I/O við innsetningarpróf fyrir einstaka 4M tímaröð.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: InfluxDB - Notkun I/O við innsetningarpróf fyrir einstaka 4M tímaröð.

Afkastamikil TSDB viðmið VictoriaMetrics vs TimescaleDB vs InfluxDB

Hér að ofan er skjáskot: TimescaleDB - I/O notkun við innsetningarpróf fyrir einstaka 4M tímaraðir.

IO notkunarmynstur spegla bandbreidd disks - InfluxDB er IO takmörkuð, á meðan VictoriaMetrics og TimescaleDB hafa auka IO auðlindir.

40M einstök tímaröð

40M einstök tímaröð voru of stór fyrir InfluxDB :)

Niðurstöður viðmiðunar:

  • VictoriaMetrics: 1,7M gagnapunktar á sekúndu; Notkun vinnsluminni: 29 GB; Plássnotkun: 17 GB.
  • InfluxDB: Kláraði ekki vegna þess að það þurfti meira en 60GB af vinnsluminni.
  • TimescaleDB: 330K gagnapunktar á sekúndu, vinnsluminni: 2,5 GB; Plássnotkun: 84GB.

TimescaleDB sýnir einstaklega litla og stöðuga vinnsluminni notkun við 2,5 GB - það sama og fyrir einstaka 4M og 400K mælikvarða.

VictoriaMetrics stækkaði hægt og rólega með hraðanum 100 þúsund gagnapunkta á sekúndu þar til öll 40M merkt mæligildisnöfn voru unnin. Hann náði síðan viðvarandi innsetningarhraða upp á 1,5-2,0M gagnapunkta á sekúndu, þannig að lokaniðurstaðan var 1,7M gagnapunktar á sekúndu.

Línuritin fyrir 40M einstaka tímaraðir eru svipuð og línuritin fyrir 4M einstaka tímaraðir, svo við skulum sleppa þeim.

Niðurstöður

  • Nútíma TSDB eru fær um að vinna innskot fyrir milljónir einstaka tímaraðir á einum netþjóni. Í næstu grein munum við prófa hversu vel TSDBs framkvæma val á milljónum einstaka tímaraðir.
  • Ófullnægjandi CPU nýting gefur venjulega til kynna I/O flöskuháls. Það gæti líka bent til þess að blokkunin sé of gróf, þar sem aðeins nokkrir þræðir geta keyrt í einu.
  • I/O flöskuhálsinn er til, sérstaklega í geymslu sem ekki er SSD eins og sýndarvædd blokkartæki skýjaveitna.
  • VictoriaMetrics veitir bestu hagræðingu fyrir hæga, litla I/O geymslu. Það veitir besta hraðann og besta þjöppunarhlutfallið.

Niðurhal VictoriaMetrics eins miðlara mynd og prófaðu það á gögnunum þínum. Samsvarandi kyrrstæður tvíundir er fáanlegur á GitHub.

Lestu meira um VictoriaMetrics í þessu grein.

Uppfærsla: birt grein sem ber saman innskotsframmistöðu VictoriaMetrics við InfluxDB með endurtakanlegum árangri.

Uppfærsla #2: Lestu líka grein um lóðréttan sveigjanleika VictoriaMetrics vs InfluxDB vs TimescaleDB.

Uppfærsla #3: VictoriaMetrics er nú opinn uppspretta!

Telegram spjall: https://t.me/VictoriaMetrics_ru1

Heimild: www.habr.com

Bæta við athugasemd