KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimescaleDB ja InfluxDB vÔrreldi eelnevas artiklis miljardi andmepunktiga komplekti, mis kuuluvad 40K unikaalsele ajareale.

MĂ”ni aasta tagasi oli Zabbixi ajastu. Iga bare metal serveril oli mitte rohkem kui paar indikatiivset mÔÔdikut – protsessori kasutamine, mĂ€lukasutus, ketas ja vĂ”rgukasutus. Nii mahtusid tuhandete serverite mÔÔdikud 40 tuhande unikaalse ajarea sisse, ja Zabbix suudab kasutada MySQL-i ajareade andmete tagaplaanina 🙂

Praegu ĂŒks node_exporter vaikimisi konfiguratsioonidega pakub keskmine host ĂŒle 500 mÔÔdiku. On palju ekspordijaid erinevatele andmebaasidele, veebiserveritele, riistvarasĂŒsteemidele jne. KĂ”ik need pakuvad palju kasulikke mÔÔdikuid. KĂ”ik ĂŒha rohkem rakendusi algavad erinevate mÔÔdikute nĂ€itamisega enda kohta. On Kubernetes koos klastrite ja pod-idega, mis nĂ€itavad palju mÔÔdikuid. See toob kaasa selle, et serverid esitavad tuhandeid unikaalseid mÔÔdikuid hostis. Seega ei ole 40K unikaalne ajareal enam suur jĂ”udlus. See muutub mainstreamiks, millega peaks ablema hĂ”lpsasti toime tulla ĂŒkskĂ”ik milline tĂ€napĂ€evane TSDB ĂŒhel serveril.

Mis on hetkel suur hulk unikaalseid ajareale? TÔenÀoliselt 400K vÔi 4M? VÔi 40M? VÔtame kaasaegsed TSDB-d nende numbritega.

Benkmarki seadistamine

TSBS on suurepĂ€rane tööriist TSDB-de testimiseks. See vĂ”imaldab genereerida meelevaldse arvu mÔÔdikuid, edastades vajaliku hulga ajareale, jagatuna 10 – lipp -scale (endine -scale-var). 10 – see on mÔÔtmiste (mÔÔdikute) arv, mis genereeritakse igal hostil, serveril. JĂ€rgnevad andmekogud loodi TSBS-i abil benchmarkimiseks:

  • 400K unikaalne ajareal, 60 sekundi intervall andmepunktide vahel, andmed katab tĂ€ielikke 3 pĂ€eva, ~1,7B koguarv andmepunkte.
  • 4M unikaalne ajareal, intervall 600 sekundit, andmed katab tĂ€ielikke 3 pĂ€eva, ~1,7B koguarv andmepunkte.
  • 40M unikaalne ajareal, intervall 1 tund, andmed katab tĂ€ielikke 3 pĂ€eva, ~2,8B koguarv andmepunkte.

Kliendi ja serveri kĂ€ivitamine toimus pĂŒhendatud instantsidel n1-standard-16 Google'i pilves. Need instantsid omasid jĂ€rgmisi konfiguratsioone:

  • vCPU-d: 16
  • RAM: 60 GB
  • MĂ€lu: tavaline 1 TB kĂ”vaketas. See pakub lugemise/kirjutamise ribalaiust 120 Mbit/s, 750 lugemisoperatsiooni sekundis ja 1,5K kirjutamisoperatsiooni sekundis.

TSDB-d on vÀlja tÔmmatud ametlikest docker'i piltidest ja kÀivitatud docker'is jÀrgnevate seadistustega:

  • VictoriaMetrics:

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

  • InfluxDB vÀÀrtused (- e vajalikud kĂ”rge jĂ”udluse toetamiseks. Üksikasjade kohta vaadake dokumentatsioon):

    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 (seadistus vĂ”eti failist): selle faili):

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

Andmeedastaja kÀivitati 16 paralleelse niidiga.

See artikkel sisaldab ainult tulemusi sisestamise mÔÔdikute kohta. Valikuline jÔudluse testimise tulemused avaldatakse eraldi artiklis.

400K unikaalset ajasarja

Alustame lihtsatest elementidest — 400K. JĂ”udlustest:

  • VictoriaMetrics: 2,6M andmepunkti sekundis; mĂ€lukasutamine: 3 GB; lĂ”plik andmemahu suurus kettal: 965 MB
  • InfluxDB: 1.2M andmepunkti sekundis; mĂ€lukasutamine: 8,5 GB; lĂ”plik andmemahu suurus kettal: 1,6 GB
  • Timescale: 849K andmepunkti sekundis; mĂ€lukasutamine: 2,5 GB; lĂ”plik andmemahu suurus kettal: 50 GB

Kuidas nĂ€ha ĂŒlaltoodud tulemustest, VictoriaMetrics vĂ”idab sisestusjĂ”udluses ja tihendamise astmes. Ajakava vĂ”idab mĂ€lukasutuses, kuid see kasutab palju kettaruumi — 29 baiti andmepunkti kohta.

Allpool on vaikuse kasutuse diagrammid (CPU) iga TSDB jaoks testimise ajal:

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülal pildil: VictoriaMetrics — CPU koormus sisestamise testi ajal unikaalse mÔÔdiku 400K jaoks.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülal pildil: InfluxDB — CPU koormus sisestamise testi ajal unikaalse mÔÔdiku 400K jaoks.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülal pildil: TimescaleDB — CPU koormus sisestamise testi ajal unikaalse mÔÔdiku 400K jaoks.

VictoriaMetrics kasutab kÔiki saadaval olevaid vCPU-sid, samas kui InfluxDB kasutab piisavalt ainult ~2 16-st vCPU-st.

Timescale kasutab ainult 3-4 16-st vCPU-st. Ajavahemike graafikus kÔrged iowait ja system proportsioonid viitavad I/O ala kitsaskohale. Vaatame ketta lÀbilaskevÔime kasutamise graafi:

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: VictoriaMetrics – ketta lĂ€bilaskevĂ”ime kasutamine sisestustestil unikaalsete mÔÔdikute jaoks 400K.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: InfluxDB – ketta lĂ€bilaskevĂ”ime kasutamine sisestustestil unikaalsete mÔÔdikute jaoks 400K.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: TimescaleDB – ketta lĂ€bilaskevĂ”ime kasutamine sisestustestil unikaalsete mÔÔdikute jaoks 400K.

VictoriaMetrics salvestab andmeid kiirusel 20 Mbit/s, saavutades tipud kuni 45 Mbit/s. Tipphetked vastavad suurtele osalistele sulandumistele puus. LSM.

InfluxDB salvestab andmeid kiirusel 160 MB/s, samas kui 1 TB kett peaks olema piiratud kirjutamise lÀbilaskevÔimega 120 MB/s.

TimescaleDB-l on kirjutamise lĂ€bilaskevĂ”ime piiratud 120 Mbit/s, kuid mĂ”nikord ĂŒletab see piiri ja saavutab tipphetked kuni 220 Mbit/s. Need tipud vastavad varasema graafiku protsessorikoormuse puudujÀÀkidele.

Vaatame I/O (sisend-vÀljund) kasutamise graafikuid:

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: VictoriaMetrics – I/O kasutamine sisestustestil 400K unikaalsete mÔÔdikute jaoks.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: InfluxDB – I/O kasutamine sisestustestil 400K unikaalsete mÔÔdikute jaoks.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: TimescaleDB – I/O kasutamine sisestustestil 400K unikaalsete mÔÔdikute jaoks.

NĂŒĂŒd on selge, et TimescaleDB saavutab I/O piiri, mistĂ”ttu ei suuda see kasutada ĂŒlejÀÀnud 12 vCPU-d.

4M unikaalset ajavoogu

4M ajavoogu nÀevad vÀlja veidi vÀljakutsuvad. Kuid meie konkurendid edukalt selle eksami sooritavad. Benchmarki tulemused:

  • VictoriaMetrics: 2,2M andmepunkti sekundis; mĂ€lu kasutamine: 6 GB; lĂ”plik andmemahud kettal: 3 GB.
  • InfluxDB: 330K andmepunkti sekundis; mĂ€lu kasutamine: 20,5 GB; lĂ”plik andmemahud kettal: 18,4 GB.
  • TimescaleDB: 480K andmepunkti sekundis; mĂ€lu kasutamine: 2,5 GB; lĂ”plik andmemahud kettal: 52 GB.

InfluxDB jÔudlus langes 1,2 miljonilt andmepunktilt sekundis 400K ajareale 330 000 andmepunktile sekundis 4M ajareale. See on mÀrkimisvÀÀrne jÔudluse langus vÔrreldes teiste konkurentidega. Vaatame protsessori kasutuse graafikuid, et mÔista selle languse peamist pÔhjust:

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: VictoriaMetrics — CPU kasutus sisestustestide ajal ainulaadse 4M ajareaga.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: InfluxDB — CPU kasutus sisestustestide ajal ainulaadse 4M ajareaga.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: TimescaleDB — CPU kasutus sisestustestide ajal ainulaadse 4M ajareaga.

VictoriaMetrics kasutab peaaegu kogu protsessorivÔimsust (CPU). Langus lÔpus vastab erakordsete LSM-i liitumiste kohta pÀrast kogu andmete sisestamist.

InfluxDB kasutab ainult 8 16-st vCPU-st, samas kui TimescaleDB kasutab 4 16-st vCPU-st. Mis on nende graafikutes ĂŒhist? KĂ”rge osakaal iowait, mis viitab taas sisendi/vĂ€ljundi kitsaskohale.

TimescaleDB-l on kĂ”rge osakaal system. Eeldame, et kĂ”rge jĂ”udlus pĂ”hjustas palju sĂŒsteemi kutsungite olnud vĂ”i palju minor page faults.

Vaatame diskikÀideldavuse graafikuid:

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: VictoriaMetrics — Diski ribakĂ€ideldavus ainulaadsete 4M mÔÔtmete sisestamise ajal.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: InfluxDB — Diski ribakĂ€ideldavus ainulaadsete 4M mÔÔtmete sisestamise ajal.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: TimescaleDB — Diski ribakĂ€ideldavus ainulaadsete 4M mÔÔtmete sisestamise ajal.

VictoriaMetrics saavutas 120 MB/s piiri tipu ajal, samas kui keskmine kirjutamiskiirus oli 40 MB/s. TÔenÀoliselt toimus tipul mitu rasket LSM-i liitumist.

InfluxDB pigistab taas vĂ€lja keskmise kirjakĂ€ideldavuse 200 MB/s, pĂŒstitades tipud kuni 340 MB/s kettal, mille kirjutamispiir on 120 MB/s 🙂

TimescaleDB ei ole enam kettaga piiratud. Tundub, et see on piiratud millegi muuga, mis on seotud kĂ”rge osakaaluga sĂŒsteemse CPU koormuse.

Vaatame IO kasutuse graafikuid:

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: VictoriaMetrics — IO kasutus sisestustestide ajal ainulaadse 4M ajareaga.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: InfluxDB — IO kasutus sisestustestide ajal ainulaadse 4M ajareaga.

KÔrge jÔudlusega TSDB tulemuslikkuse test VictoriaMetrics vs TimescaleDB vs InfluxDB

Ülalolev ekraanipilt: TimescaleDB — IO kasutus sisestustestide ajal ainulaadse 4M ajareaga.

IO kasutuse graafikud jÀljendavad kettalaeva kasutuse graafikuid - InfluxDB-l on IO piirangud, samas kui VictoriaMetrics ja TimescaleDB omavad varu IO ressursse.

40M unikaalset ajaseeriat

40M unikaalset ajajoonet oli InfluxDB jaoks liiga suur 🙁

Benkmarki tulemused:

  • VictoriaMetrics: 1,7M andmepunkti sekundis; mĂ€lukasutuse: 29 GB; kettaruumi kasutamine: 17 GB.
  • InfluxDB: ei lĂ”petanud, kuna see nĂ”udis rohkem kui 60 GB mĂ€lu.
  • TimescaleDB: 330K andmepunkti sekundis, mĂ€lukasutuse: 2,5 GB; kettaruumi kasutamine: 84GB.

TimescaleDB nĂ€itab erakordselt madalat ja stabiilset mĂ€lukasutust – 2,5 GB – sama palju kui unikaalsete mÔÔdikute puhul 4M ja 400K.

VictoriaMetrics kasvas aeglaselt 100 tuhat andmepunkti sekundis, kuni kÔik 40M mÔÔdikute nimetused koos siltidega olid töödeldud. Siis saavutati stabiilne sisestamise kiirus 1,5-2,0M andmepunkti sekundis, nii et lÔpptulemus oli 1,7M andmepunkti sekundis.

40M unikaalse ajajoonte graafikud sarnanevad 4M unikaalse ajajoonte graafikutega, seega jÀtame need vahele.

JĂ€reldused

  • TĂ€napĂ€eva TSDB-d suudavad hallata sisestusi miljonite unikaalsete ajajoonte jaoks ĂŒhel serveril. JĂ€rgmises artiklis uurime, kui hĂ€sti TSDB-d suudavad valikut teha miljonite unikaalsete ajajoonte seas.
  • Ebapiisav protsessori koormus nĂ€itab tavaliselt IO kitsaskohta. Lisaks vĂ”ib see viidata liiga jĂ€medale lukustusele, kus samal ajal vĂ”ib töötada ainult mĂ”ni lĂ”ng.
  • IO kitsaskohad eksisteerivad tĂ”eliselt, eriti talletustes, kus pole SSD-sid, nĂ€iteks pilveteenuste pakkujate virtualiseeritud plokkseadmetes.
  • VictoriaMetrics pakub parimat optimeerimist aeglastele madala IO-talumisega talletustele. See tagab parima kiirus ja parima tihenduse.

Laadige alla ĂŒhe serveriga VictoriaMetrics pilt ja proovige seda oma andmetel. Vastav staatiline binaarfail on saadaval GitHub.

VictoriaMetrics kohta lugege rohkem selles artiklis.

Uuendus: avaldatud artikkel, mis vÔrdleb VictoriaMetrics'i sisestuse jÔudlust InfluxDB-ga koos korduvate tulemustega.

Uuendus #2: Loe ka artiklit vertikaalsest skaleeritavusest VictoriaMetrics vs InfluxDB vs TimescaleDB.

Uuendus #3: VictoriaMetrics on nĂŒĂŒd avatud lĂ€htekoodiga!

Telegrami vestlus: https://t.me/VictoriaMetrics_ru1

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster