ProHoster > Blogi > Haldamine > Suure jõudlusega TSDB võrdlusalus VictoriaMetrics vs TimescaleDB vs InfluxDB
Suure jõudlusega TSDB võrdlusalus VictoriaMetrics vs TimescaleDB vs InfluxDB
VictoriaMetricsi, TimescaleDB ja InfluxDB võrreldi aastal Eelmine artikkel miljardi andmepunktiga andmestikul, mis kuuluvad 40 XNUMX ainulaadsesse aegreasse.
Mõni aasta tagasi oli Zabbixi ajastu. Igal metallist serveril ei olnud rohkem kui paar näitajat – protsessori kasutus, RAM-i kasutus, kettakasutus ja võrgukasutus. Nii mahuvad tuhandete serverite mõõdikud 40 tuhandesse unikaalsesse aegreasse ja Zabbix saab kasutada MySQL-i aegridade andmete taustaprogrammina :)
Hetkel üksi sõlme_eksportija vaikekonfiguratsioonidega pakub keskmisel hostil üle 500 mõõdiku. Seal on palju eksportijad erinevate andmebaaside, veebiserverite, riistvarasüsteemide jne jaoks. Need kõik pakuvad mitmesuguseid kasulikke mõõdikuid. Kõik üha rohkem rakendusi hakkavad endale erinevaid näitajaid seadma. Kubernetes on klastrite ja kaunadega, mis paljastavad palju mõõdikuid. Selle tulemuseks on serverid, mis paljastavad tuhandeid kordumatuid mõõdikuid hosti kohta. Seega pole ainulaadne 40K aegrida enam suure võimsusega. See on muutumas peavooluks ja seda peaks hõlpsasti käsitlema iga kaasaegne TSDB ühes serveris.
Kui suur on unikaalsete aegridade arv hetkel? Ilmselt 400K või 4M? Või 40 m? Võrdleme tänapäevaseid TSDB-sid nende numbritega.
Võrdlusaluse paigaldamine
TSBS on suurepärane võrdlusuuringute tööriist TSDB-de jaoks. See võimaldab teil genereerida suvalise arvu mõõdikuid, edastades vajaliku arvu aegridu jagatuna 10-ga - lipp -kaal (endine -scale-var). 10 on igas hostis või serveris genereeritud mõõtmiste (mõõdikute) arv. TSBS-i abil loodi võrdlusaluseks järgmised andmekogumid:
400 60 ainulaadset aegrida, 3-sekundiline intervall andmepunktide vahel, andmed hõlmavad tervet 1.7 päeva, andmepunktide koguarv ~XNUMX miljardit.
4 miljonit unikaalset aegrida, 600-sekundiline intervall, andmed hõlmavad 3 täispäeva, andmepunktide koguarv ~1.7 miljardit.
40 miljonit unikaalset aegrida, 1-tunnine intervall, andmed hõlmavad 3 täispäeva, andmepunktide koguarv ~2.8 miljardit.
Klient ja server töötasid spetsiaalsetel eksemplaridel n1-standard-16 Google'i pilves. Nendel juhtudel olid järgmised konfiguratsioonid:
vCPU-d: 16
RAM: 60 GB
Salvestusruum: standardne 1TB kõvaketas. See tagab 120 Mbps lugemise/kirjutamise läbilaskevõime, 750 lugemistoimingut sekundis ja 1,5K kirjutamiskiirust sekundis.
TSDB-d ekstraheeriti ametlikest dockeri piltidest ja käitati dockeris järgmiste konfiguratsioonidega:
VictoriaMetrics:
docker run -it --rm -v /mnt/disks/storage/vmetrics-data:/victoria-metrics-data -p 8080:8080 valyala/victoria-metrics
InfluxDB (-e) väärtused on vajalikud suure võimsuse toetamiseks. Vaadake üksikasju dokumentatsioon):
Nagu ülaltoodud tulemustest näha, võidab VictoriaMetrics sisestamise jõudluse ja tihendussuhte osas. Ajaskaala võidab RAM-i kasutamises, kuid see kasutab palju kettaruumi – 29 baiti andmepunkti kohta.
Allpool on võrdlusuuringu ajal iga TSDB protsessori kasutamise graafikud:
Ülal on ekraanipilt: VictoriaMetrics – protsessori koormus sisestustesti ajal ainulaadse 400 XNUMX mõõdiku jaoks.
Ülal on ekraanipilt: InfluxDB – protsessori koormus sisestustesti ajal unikaalse mõõdiku 400K jaoks.
Ülal on ekraanipilt: TimescaleDB – protsessori koormus sisestustesti ajal ainulaadse 400 XNUMX mõõdiku jaoks.
VictoriaMetrics kasutab kõiki saadaolevaid vCPU-sid, samas kui InfluxDB kasutab alakasutamist ~ 2 vCPU-st 16-st.
Ajaskaala kasutab 3-st vCPU-st ainult 4–16. Iowaiti ja süsteemi suur osakaal TimescaleDB ajaskaala graafikus viitab kitsaskohale sisend/väljund (I/O) alamsüsteemis. Vaatame ketta ribalaiuse kasutamise graafikuid:
Ülal on ekraanipilt: VictoriaMetrics – ketta ribalaiuse kasutamine unikaalsete mõõdikute sisestamise testis 400K.
Ülal on ekraanipilt: InfluxDB – ketta ribalaiuse kasutamine sisestustestil unikaalsete mõõdikute jaoks 400K.
Ülal on ekraanipilt: TimescaleDB – unikaalsete mõõdikute 400K ketta ribalaiuse kasutamine sisestamise testil.
VictoriaMetrics salvestab andmeid kiirusel 20 Mbps, tippkiirusega kuni 45 Mbps. Tipud vastavad puu suurele osalisele ühinemisele LSM.
InfluxDB kirjutab andmeid kiirusega 160 MB/s, samas kui 1 TB draiv peaks olema piiratud kirjutusvõimsus 120 MB/s.
TimescaleDB on piiratud kirjutamisvõimsusega 120 Mbps, kuid mõnikord ületab see piiri ja saavutab tippväärtuste 220 Mbps. Need piigid vastavad eelmise graafiku ebapiisava CPU kasutuse orgudele.
InfluxDB jõudlus langes 1,2 miljonilt andmepunktilt sekundis 400 330 aegrea puhul 4 XNUMX andmepunktini sekundis XNUMX miljoni aegrea puhul. See on märkimisväärne jõudluse langus võrreldes teiste konkurentidega. Vaatame protsessori kasutamise graafikuid, et mõista selle kaotuse algpõhjust:
Ülal on ekraanipilt: VictoriaMetrics – protsessori kasutamine sisestustesti ajal ainulaadse 4M aegrea jaoks.
Ülal on ekraanipilt: InfluxDB – protsessori kasutamine sisestustesti ajal ainulaadsete 4M aegridade jaoks.
Ülal on ekraanipilt: TimescaleDB – protsessori kasutus sisestustesti ajal ainulaadse 4M aegrea jaoks.
VictoriaMetrics kasutab peaaegu kogu protsessori (CPU) võimsust. Lõpus olev langus vastab järelejäänud LSM-i liitmistele pärast kõigi andmete sisestamist.
InfluxDB kasutab ainult 8 vCPU-st 16-st, TimsecaleDB aga 4 vCPU-st 16-st. Mis on nende graafikutel ühist? Kõrge osakaal iowait, mis viitab taas I/O kitsaskohale.
TimescaleDB-l on suur osakaal system. Eeldame, et suure võimsuse tulemuseks oli palju või palju süsteemikõnesid väikesed lehe vead.
Vaatame ketta läbilaskevõime graafikuid:
Ülal on ekraanipilt: VictoriaMetrics – ketta ribalaiuse kasutamine 4M unikaalse mõõdiku sisestamiseks.
Ülal on ekraanipilt: InfluxDB – ketta ribalaiuse kasutamine 4M unikaalse mõõdiku sisestamiseks.
Ülal on ekraanipilt: TimescaleDB – ketta ribalaiuse kasutamine 4M unikaalse mõõdiku sisestamiseks.
VictoriaMetrics saavutas tipphetkel 120 MB/s piiri, samas kui keskmine kirjutamiskiirus oli 40 MB/s. Tõenäoliselt viidi tippajal läbi mitu rasket LSM-i liitmist.
InfluxDB pigistab jällegi välja keskmise kirjutusvõimsuse 200 MB/s tippudega kuni 340 MB/s kettale kirjutuslimiidiga 120 MB/s :)
TimescaleDB ei ole enam kettaga piiratud. Näib, et seda piirab miski muu, mis on seotud suure osakaaluga системной CPU koormus.
Vaatame IO kasutamise graafikuid:
Ülal on ekraanipilt: VictoriaMetrics – sisend-/väljundi kasutamine sisestustesti ajal ainulaadse 4M aegrea jaoks.
Ülal on ekraanipilt: InfluxDB – sisend-/väljundi kasutamine sisestustesti ajal ainulaadse 4M aegrea jaoks.
Ülal on ekraanipilt: TimescaleDB – sisend-/väljundkasutus sisestustesti ajal ainulaadsete 4M aegridade jaoks.
IO kasutusmustrid peegeldavad ketta ribalaiuse omasid – InfluxDB on IO piiratud, samas kui VictoriaMetricsil ja TimescaleDB-l on vabad IO-ressursid.
40 miljonit unikaalset aegrida
40 miljonit unikaalset aegrida oli InfluxDB jaoks liiga suur :)
TimescaleDB näitab erakordselt madalat ja stabiilset RAM-i kasutust 2,5 GB juures – sama, mis ainulaadsete 4M ja 400K mõõdikute puhul.
VictoriaMetrics suurenes aeglaselt kiirusega 100 40 andmepunkti sekundis, kuni kõik 1,5 miljonit märgistatud mõõdiku nime töödeldi. Seejärel saavutas ta püsiva sisestamise kiiruse 2,0–1,7 miljonit andmepunkti sekundis, seega oli lõpptulemuseks XNUMX miljonit andmepunkti sekundis.
40 miljoni kordumatu aegrea graafikud on sarnased 4 miljoni kordumatu aegrea graafikutega, nii et jätame need vahele.
Järeldused
Kaasaegsed TSDB-d on võimelised ühes serveris töötlema miljonite ainulaadsete aegridade lisasid. Järgmises artiklis testime, kui hästi teostavad TSDB-d valikut miljonite ainulaadsete aegridade lõikes.
CPU ebapiisav kasutamine viitab tavaliselt sisend-väljundi kitsaskohale. See võib viidata ka sellele, et blokeering on liiga jäme, korraga saab läbida vaid paar keerme.
I/O kitsaskoht on olemas, eriti mitte-SSD-mäluseadmes, näiteks pilveteenuse pakkujate virtualiseeritud plokkseadmetes.
VictoriaMetrics pakub parimat optimeerimist aeglase ja madala I/O-salvestuse jaoks. See tagab parima kiiruse ja parima tihendusastme.