Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimecaleDB iyo InfluxDB ayaa la barbardhigay maqaal hore ku saabsan xog-ururin leh bilyan xog dhibco ah oo ka tirsan 40K waqti taxane ah oo gaar ah.

Dhowr sano ka hor waxaa jiray xilli Zabbix ah. Server kasta oo biraha qaawan ma lahayn wax ka badan dhawr tilmaame - isticmaalka CPU, isticmaalka RAM, isticmaalka diskka iyo isticmaalka shabakada. Sidan, qiyaasaha kumanaan server ah waxay ku haboonaan karaan 40 kun oo taxane waqti gaar ah, Zabbix waxay u isticmaali kartaa MySQL sidii gadaal u ah xogta taxanaha wakhtiga :)

Hadda kali ah node_dhoofin qaabaynta caadiga ah waxay bixisaa in ka badan 500 metrik celceliska martida loo yahay. Kuwa badan baa jira dhoofiyayaal loogu talagalay keydka macluumaadka ee kala duwan, server-yada shabakadda, nidaamyada qalabka, iwm. Dhammaantood waxay bixiyaan cabbirro kala duwan oo faa'iido leh. Dhammaan codsiyo aad iyo aad u badan bilaabaan inay dejiyaan tilmaamo kala duwan naftooda. Waxaa jira Kubernetes oo leh rucubyo iyo boodhyo soo bandhigaya cabbirro badan. Tani waxay keenaysaa in adeegayaashu ay soo bandhigaan kumanaan cabbir oo gaar ah martigeliyahaba. Markaa taxanaha wakhtiga gaarka ah ee 40K ma aha awood sare. Waxay noqonaysaa mid guud oo waa in si fudud loo maareeyo TSDB kasta oo casri ah oo ku yaal hal server.

Waa maxay tirada badan ee taxanaha waqtiyada gaarka ah xilligan? Malaha 400K ama 4M? Mise 40m? Aynu is barbar dhigno TSDB-yada casriga ah tirooyinkan.

Ku rakibida bartilmaameedka

TSBS waa qalab benchmarking heer sare ah oo loogu talagalay TSDBs. Waxay kuu ogolaanaysaa inaad abuurto tiro aan sabayn oo mitir ah adoo gudbaya tirada loo baahan yahay ee taxanaha wakhtiga oo loo qaybiyay 10 - calan - miisaan ( hore -scale-var). 10 waa tirada cabbiraadaha (metrics) ee laga soo saaray martigeliyaha ama server kasta. Xogta soo socota ayaa la sameeyay iyadoo la adeegsanayo TSBS bartilmaameedka:

  • 400K waqti taxane ah oo gaar ah, 60 dhexda labaad ee u dhexeeya dhibcaha xogta, xogtu waxay soconaysaa 3 maalmood oo buuxa, ~ 1.7B tirada guud ee dhibcaha xogta.
  • 4M oo taxane waqti gaar ah, 600 dhexda labaad, xogtu waxay gaaraysaa 3 maalmood oo buuxa, ~ 1.7B tirada guud ee dhibcaha xogta.
  • 40M oo taxane ah oo wakhti gaar ah, dhexda 1 saac ah, xogtu waxay gaadhaysaa 3 maalmood oo buuxa, ~ 2.8B tirada guud ee dhibcaha xogta.

Macmiilka iyo server-ka waxay ku shaqaynayeen tusaaleyaal go'an n1-heerka-16 ee Google Cloud. Tusaalooyinkani waxay lahaayeen habaynta soo socota:

  • vCPUs: 16
  • RAM: 60 GB
  • Kaydinta: Heerka 1TB HDD. Waxay bixisaa 120 Mbps wax-akhris/qoraal ah, 750 hawl-akhris ilbiriqsi kasta iyo 1,5K ayaa qoraya ilbiriqsikii.

TSDB-yada waxaa laga soo saaray sawirada docker-ka rasmiga ah waxayna ku ordeen docker-ka qaabaynta soo socota:

  • VictoriaMetrics:

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

  • InfluxDB (-e) qiyamka ayaa loo baahan yahay si loo taageero awood sare. Fiiri faahfaahinta gudaha dukumentiyo):

    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

  • TimecaleDB (habaynta laga soo qaatay waxaa fayl):

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

Raadiyaha xogta waxa lagu socodsiiyay 16 dun oo is barbar socda.

Maqaalkani waxa uu ka kooban yahay oo keliya natiijooyinka gelinta bartilmaameedyada. Natiijooyinka bartilmaameedka xulashada waxaa lagu daabici doonaa maqaal gaar ah.

400K oo taxane waqti gaar ah

Aan ku bilowno walxaha fudud - 400K. Natiijooyinka cabbirka:

  • VictoriaMetrics: 2,6M dhibcood xogta ilbiriqsikii; Isticmaalka RAM: 3 GB; cabbirka xogta kama dambaysta ah ee diskka: 965 MB
  • InfluxDB: 1.2M dhibcood xogta ilbiriqsikii; Isticmaalka RAM: 8.5 GB; cabbirka xogta kama dambaysta ah ee diskka: 1.6 GB
  • Qiyaasta wakhtiga: 849K dhibcaha xogta ilbiriqsikii; Isticmaalka RAM: 2,5 GB; cabbirka xogta kama dambaysta ah ee diskka: 50 GB

Sida aad ka arki karto natiijooyinka sare, VictoriaMetrics waxay ku guulaysataa waxqabadka gelinta iyo saamiga isku xidhka. Jadwalka waqtiga ayaa ku guulaysta isticmaalka RAM, laakiin waxay isticmaashaa meel disk badan - 29 bytes halkii xogta.

Hoos waxaa ah garaafyada isticmaalka CPU ee mid kasta oo ka mid ah TSDB-yada inta lagu jiro bartilmaameedka:

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: VictoriaMetrics - Culayska CPU inta lagu jiro tijaabada gelinta mitirka 400K ee gaarka ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: InfluxDB - culeyska CPU inta lagu jiro tijaabada gelinta metrik 400K gaar ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Korku waa sawir-qaadis: TimecaleDB - Culayska CPU inta lagu jiro tijaabada gelinta qiyaas gaar ah oo 400K ah.

VictoriaMetrics waxay isticmaashaa dhammaan vCPU-yada la heli karo, halka InfluxDB aan laga faa'iidaysan ~2 marka loo eego 16 vCPUs.

Jadwalka wakhtiga waxa uu isticmaalaa kaliya 3-4 ee 16 vCPUs. Qaybaha sare ee iowait iyo nidaamka jaantuska TimecaleDB waxay muujinayaan cilad ku jirta hab- hoosaadka wax gelinta/soo-saarka (I/O). Aynu eegno garaafyada isticmaalka bandwidth ee diskka:

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Xagga sare waa sawirka: VictoriaMetrics - Isticmaalka Bandwidth ee Disk ee Imtixaanka Gelida ee Metrics Gaarka ah 400K.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Korku waa sawir-qaad: InfluxDB - Isticmaalka Bandwidth ee Disk ee Imtixaanka Gelida ee Metrics Gaarka ah 400K.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Xagga sare waa sawir-qaadasho: TimecaleDB - Isticmaalka Bandwidth ee Disk ee Imtixaanka Gelida ee Metrics Gaarka ah 400K.

VictoriaMetrics waxay diiwaan gelisaa xogta 20 Mbps oo leh ugu sarreysa ilaa 45 Mbps. Meesha ugu sarreysa waxay u dhigantaa isku darka weyn ee qayb ahaan geedka NGO.

InfluxDB waxay ku qortaa xogta 160 MB/s, halka uu wado 1 TB waa in la xadidaa qor xawaaraha 120 MB/s.

TimecaleDB waxay ku xaddidan tahay inay qorto 120 Mbps, laakiin mararka qaarkood waxay jebisaa xadkan oo waxay gaartaa 220 Mbps qiimaha ugu sarreeya. Meelaha ugu sarreeya waxay u dhigmaan dooxooyinka isticmaalka CPU ee aan ku filneyn ee garaafka hore.

Aynu eegno garaafyada isticmaalka gelinta/soo-saarka (I/O):

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Xagga sare waa sawir-qaad: VictoriaMetrics - Geli tijaabada I/O isticmaalka 400K metrik gaar ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: InfluxDB - Geli tijaabada I/O isticmaalka 400K cabbirrada gaarka ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Xagga sare waa sawir-qaadis: TimecaleDB - Geli tijaabada I/O isticmaalka 400K cabbirrada gaarka ah.

Hadda way caddahay in TimecaleDB ay gaadhayso xadka I/O, markaa ma isticmaali karto 12 vCPU-da soo hadhay.

4M taxane waqti gaar ah

Taxanaha waqtiga 4M waxay u muuqdaan kuwo dhib yar. Laakin tartamayaashayadu waxay si guul leh ugu gudbaan imtixaankan. Natiijooyinka cabbirka:

  • VictoriaMetrics: 2,2M dhibcood xogta ilbiriqsikii; Isticmaalka RAM: 6 GB; cabbirka xogta ugu dambeysa ee diskka: 3 GB.
  • InfluxDB: 330K dhibcood xogta ilbiriqsikii; Isticmaalka RAM: 20,5 GB; cabbirka xogta kama dambaysta ah ee diskka: 18,4 GB.
  • TimecaleDB: 480K dhibcood xogta ilbiriqsikii; Isticmaalka RAM: 2,5 GB; cabbirka xogta kama dambaysta ah ee diskka: 52 GB.

Waxqabadka InfluxDB wuxuu hoos uga dhacay 1,2M dhibcaha xogta ilbiriqsi kasta oo ah 400K ilaa 330K dhibcaha xogta ilbiriqsi kasta oo ah 4M. Tani waa khasaare weyn oo waxqabad marka loo eego tartamayaasha kale. Aynu eegno garaafyada isticmaalka CPU si aan u fahanno sababta asalka u ah khasaarahan:

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: VictoriaMetrics - Isticmaalka CPU inta lagu jiro tijaabada gelinta waqti taxane ah oo 4M ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: InfluxDB - Isticmaalka CPU inta lagu jiro tijaabada gelinta ee taxanaha wakhtiga 4M.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: TimecaleDB - Isticmaalka CPU inta lagu jiro tijaabada gelinta waqti taxane ah oo 4M ah.

VictoriaMetrics waxa ay isticmaashaa ku dhawaad ​​dhammaan awoodda wax-qabadka (CPU). Dhibicda dhamaadka waxay u dhigantaa isku darka LSM ee soo hadhay ka dib marka dhammaan xogta la geliyo.

InfluxDB waxay isticmaashaa kaliya 8 ee 16 vCPUs, halka TimsecaleDB ay isticmaasho 4 ee 16 vCPUs. Maxay garaafyadooda ka siman yihiin? Saami sare iowait, kaas oo mar kale tilmaamaya I/O dhalo.

TimecaleDB waxay leedahay saami sare system. Waxaan u maleyneynaa in awooda sare ay keentay wicitaano badan oo nidaamka ama qaar badan khaladaadka bogga yar.

Aynu eegno garaafyada wax soo saarka diskka:

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Xagga sare waxa ku yaal sawir-qaadis: VictoriaMetrics - Isticmaalka xadhkaha xadhkaha goosha si aad u geliso 4M mitir oo gaar ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: InfluxDB - Isticmaalka xawaaraha diskka si loo geliyo 4M cabbiro gaar ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: TimecaleDB - Isticmaalka xawaaraha diskka si loo geliyo 4M cabbiro gaar ah.

VictoriaMetrics waxay gaartay xadka ugu sarreeya 120 MB/s, halka celceliska xawaaraha qorista uu ahaa 40 MB/s. Waxay u badan tahay in dhowr fiyuus oo LSM culus ah la sameeyay intii lagu jiray heerka ugu sarreeya.

InfluxDB waxay mar kale soo saartaa celceliska wax-soo-saarka qoraalka ee 200 MB/s oo leh ugu badnaan ilaa 340 MB/s

TimecaleDB hadda ma xaddidna saxanka. Waxay u muuqataa in lagu xaddiday wax kale oo la xidhiidha saamiga sare систСмной culeyska CPU.

Aynu eegno garaafyada isticmaalka IO:

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadasho: VictoriaMetrics - Isticmaalka I/O inta lagu jiro tijaabada gelinta waqti taxane ah oo 4M ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: InfluxDB - Isticmaalka I/O inta lagu jiro tijaabada gelinta waqti taxane ah oo 4M ah.

Heerka waxqabadka sare ee TSDB VictoriaMetrics vs TimescaleDB vs InfluxDB

Kor waxaa ku yaal sawir-qaadis: TimecaleDB - Isticmaalka I/O inta lagu jiro tijaabada galinta ee taxanaha wakhtiga 4M ee gaarka ah.

Qaababka isticmaalka IO-du waxay muraayad u yihiin kuwa xajmigoodu yahay - InfluxDB waa IO xaddidan, halka VictoriaMetrics iyo TimescaleDB ay leeyihiin kheyraadka IO ee firaaqada ah.

40M taxane waqti gaar ah

40M taxane waqti gaar ah aad buu ugu weynaa InfluxDB :)

Natiijooyinka cabbirka:

  • VictoriaMetrics: 1,7M dhibcood xogta ilbiriqsikii; Isticmaalka RAM: 29 GB; Isticmaalka booska diskka: 17 GB.
  • InfluxDB: Ma dhamayn sababtoo ah waxay u baahday in ka badan 60GB ee RAM.
  • TimecaleDB: 330K dhibcaha xogta ilbiriqsikii, isticmaalka RAM: 2,5 GB; Isticmaalka booska diskka: 84GB.

TimecaleDB waxay muujinaysaa isticmaalka RAM aad u hooseeya oo deggan 2,5 GB - oo la mid ah cabbirada 4M iyo 400K ee gaarka ah.

VictoriaMetrics ayaa si tartiib tartiib ah kor ugu qaaday 100k dhibcood xogta ilbiriqsi kasta ilaa dhammaan magacyada mitirka ee 40M la habeeyey. Ka dib waxa uu gaadhay heerka gelinta joogtada ah ee 1,5-2,0M dhibcood ilbiriqsikii, sidaa awgeed natiijadii ugu dambaysay waxa ay noqotay 1,7M dhibcood xogta ilbiriqsikii.

Garaafyada 40M ee taxanaha wakhtiga gaarka ah waxay la mid yihiin garaafyada 4M oo taxane wakhti gaar ah, markaa aynu ka boodno iyaga.

natiijooyinka

  • TSDB-yada casriga ah waxay awood u leeyihiin inay farsameeyaan gelisyada malaayiin taxane waqti gaar ah oo hal server ah. Maqaalka soo socda, waxaan ku tijaabin doonaa sida wanaagsan ee TSDBs u qabtaan xulashada malaayiin taxane waqtiyo gaar ah.
  • Ka faa'iidaysiga CPU oo aan ku filnayn badanaa waxay muujisaa cilad I/O ah. Waxa kale oo laga yaabaa inay muujiso in xannibaadda ay aad u qallafsan tahay, oo leh dhawr xadhig oo keliya oo awood u leh inay socdaan.
  • Qulqulka I/O ayaa ka jira, gaar ahaan kaydinta aan SSD-ta ahayn sida aaladaha xannibaadda daruuriga ah ee bixiyayaasha daruuraha.
  • VictoriaMetrics waxay siisaa hagaajinta ugu wanaagsan ee kaydinta I/O oo hoosaysa. Waxay bixisaa xawaaraha ugu fiican iyo saamiga ugu fiican ee cadaadiska.

Soo dejiso VictoriaMetrics sawirka hal-server oo ku tijaabi xogtaada. Binary-ga joogtada ah ee u dhigma ayaa laga heli karaa GitHub.

Ka akhri wax badan oo ku saabsan VictoriaMetrics tan maqaal.

Update: la daabacay Maqaal isbarbar dhigaya waxqabadka gelista VictoriaMetrics iyo InfluxDB oo leh natiijooyin la soo saari karo.

Cusbooneysii #2: Sidoo kale akhri maqaal ku saabsan miisaan toosan VictoriaMetrics vs InfluxDB vs TimescaleDB.

Cusbooneysii #3: VictoriaMetrics hadda waa il furan!

Wada sheekaysiga telegram: https://t.me/VictoriaMetrics_ru1

Source: www.habr.com

Add a comment