Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Chaidh coimeas a dhèanamh eadar VictoriaMetrics, TimescaleDB agus InfluxDB artaigil roimhe air stòr-dàta le billean puingean dàta a bhuineas do shreath ùine sònraichte 40K.

O chionn beagan bhliadhnaichean bha linn Zabbix ann. Cha robh barrachd air beagan chomharran aig gach frithealaiche meatailt lom - cleachdadh CPU, cleachdadh RAM, cleachdadh diosc agus cleachdadh lìonra. San dòigh seo, faodaidh meatrach bho mhìltean de luchd-frithealaidh a dhol a-steach do 40 mìle sreath ùine sònraichte, agus faodaidh Zabbix MySQL a chleachdadh mar chùl-taic airson dàta sreath ùine :)

An-dràsta na aonar node_exporter le rèiteachadh bunaiteach a’ toirt seachad còrr air 500 meatrach air an aoigh àbhaisteach. Tha moran ann luchd-às-mhalairt airson diofar stòran-dàta, frithealaichean lìn, siostaman bathar-cruaidh, msaa. Bidh iad uile a’ tabhann measgachadh de mheatairean feumail. Uile barrachd is barrachd thagraidhean tòiseachadh air diofar chomharran a shuidheachadh dhaibh fhèin. Tha Kubernetes ann le cruinneachaidhean agus pods a tha a’ nochdadh mòran mheatairean. Tha seo a’ ciallachadh gu bheil luchd-frithealaidh a’ nochdadh mìltean de mheatairean sònraichte gach aoigh. Mar sin chan eil an t-sreath ùine 40K sònraichte tuilleadh cumhachd àrd. Tha e a’ fàs àbhaisteach agus bu chòir dha a bhith air a làimhseachadh gu furasta le TSDB ùr-nodha sam bith air aon fhrithealaiche.

Dè an àireamh mhòr de shreath ùine gun samhail a th’ ann an-dràsta? Is dòcha 400K no 4M? No 40m? Dèanamaid coimeas eadar TSDBan an latha an-diugh agus na h-àireamhan sin.

Stàladh comharra-measaidh

TSBS na inneal measaidh sàr-mhath airson TSDBn. Leigidh e leat àireamh neo-riaghailteach de mheatairean a ghineadh le bhith a’ dol seachad air an àireamh riatanach de shreath ùine air a roinn le 10 - bratach -sgèile (roimhe -scale-var). Is e 10 an àireamh de thomhasan (meatairean) a chaidh a chruthachadh air gach aoigh no frithealaiche. Chaidh na stòran-dàta a leanas a chruthachadh a’ cleachdadh TSBS airson an t-slat-tomhais:

  • Sreath ùine sònraichte 400K, eadar-ama 60 diog eadar puingean dàta, dàta a ’spangachadh 3 latha slàn, ~ 1.7B àireamh iomlan de phuingean dàta.
  • Sreath ùine sònraichte 4M, eadar-ama 600 diog, dàta a ’spangachadh 3 latha slàn, ~ 1.7B àireamh iomlan de phuingean dàta.
  • Sreath ùine sònraichte 40M, eadar-ama 1 uair, tha dàta a ’spangachadh 3 latha slàn, ~ 2.8B àireamh iomlan de phuingean dàta.

Bha an neach-dèiligidh agus an frithealaiche a’ ruith air suidheachaidhean sònraichte n1-inbhe-16 ann an sgòth Google. Bha na rèiteachaidhean a leanas aig na suidheachaidhean sin:

  • vCPU: 16
  • RAM: 60 GB
  • Stòradh: Coitcheann 1TB HDD. Bidh e a’ toirt seachad 120 Mbps le bhith a’ leughadh/sgrìobhadh trochur, 750 obair leughaidh gach diog agus 1,5K a’ sgrìobhadh gach diog.

Chaidh TSDBn a thoirt a-mach à ìomhaighean oifigeil docker agus ruith ann an docker leis na rèiteachaidhean a leanas:

  • VictoriaMetrics:

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

  • Tha feum air luachan InfluxDB (-e) gus taic a thoirt do chumhachd àrd Faic mion-fhiosrachadh ann an sgrìobhainnean):

    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

  • Raon-amaDB (rèiteachadh air a thoirt bho e faidhle):

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

Chaidh an luchdan dàta a ruith le 16 snàithleanan co-shìnte.

Chan eil anns an artaigil seo ach toraidhean airson slatan-tomhais cuir a-steach. Thèid toraidhean an t-slat-tomhais roghnach fhoillseachadh ann an artaigil air leth.

Sreath ùine sònraichte 400K

Feuch an tòisich sinn le eileamaidean sìmplidh - 400K. Toraidhean comharrachaidh:

  • VictoriaMetrics: 2,6M puingean dàta gach diog; Cleachdadh RAM: 3 GB; meud an dàta mu dheireadh air diosc: 965 MB
  • InfluxDB: puingean dàta 1.2M gach diog; Cleachdadh RAM: 8.5 GB; meud an dàta mu dheireadh air diosc: 1.6 GB
  • Raon-ama: 849K puingean dàta gach diog; Cleachdadh RAM: 2,5 GB; meud an dàta mu dheireadh air diosc: 50 GB

Mar a chì thu bho na toraidhean gu h-àrd, bidh VictoriaMetrics a’ buannachadh ann an coileanadh cuir a-steach agus co-mheas teannachaidh. Bidh loidhne-tìm a’ buannachadh ann an cleachdadh RAM, ach bidh e a’ cleachdadh tòrr àite diosc - 29 bytes gach puing dàta.

Gu h-ìosal tha na grafaichean cleachdaidh CPU airson gach aon de na TSDBn rè an t-slat-tomhais:

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: VictoriaMetrics - luchdachadh CPU rè deuchainn cuir a-steach airson meatrach sònraichte 400K.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: InfluxDB - luchdachadh CPU rè deuchainn cuir a-steach airson meatrach sònraichte 400K.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: TimescaleDB - luchdachadh CPU rè deuchainn cuir a-steach airson meatrach sònraichte de 400K.

Bidh VictoriaMetrics a’ cleachdadh a h-uile vCPU a tha ri fhaighinn, fhad ‘s nach eil InfluxDB a’ dèanamh cus feum de ~2 a-mach à 16 vCPUn.

Chan eil an clàr-ama a’ cleachdadh ach 3-4 de na 16 vCPUn. Tha cuibhreannan àrda de iowait agus siostam anns a’ ghraf clàr-ama TimescaleDB a’ nochdadh cnap-starra san fho-shiostam cuir a-steach/toradh (I/O). Bheir sinn sùil air grafaichean cleachdadh leud-bann diosc:

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: VictoriaMetrics - Cleachdadh Bandwidth Diosc ann an Deuchainn Cuir a-steach airson Metrics gun samhail 400K.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: InfluxDB - Cleachdadh Bandwidth Diosc air Deuchainn Cuir a-steach airson Metrics gun samhail 400K.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: Raon-amaDB - Cleachdadh Bandwidth Diosc air Deuchainn Cuir a-steach airson Metrics gun samhail 400K.

Bidh VictoriaMetrics a’ clàradh dàta aig 20 Mbps le stùcan suas gu 45 Mbps. Bidh mullaichean a 'freagairt ri co-aonaidhean mòra pàirt anns a' chraoibh NGO.

Bidh InfluxDB a’ sgrìobhadh dàta aig 160 MB / s, fhad ‘s a tha draibhear 1 TB bu chòir a bhith cuingealaichte sgrìobhadh throughput 120 MB/s.

Tha TimescaleDB cuingealaichte ri bhith a’ sgrìobhadh trochur de 120 Mbps, ach uaireannan brisidh e a’ chrìoch seo agus ruigidh e 220 Mbps ann an luachan as àirde. Tha na stùcan sin a’ freagairt ris na glinn far nach eil cleachdadh CPU gu leòr anns a’ ghraf roimhe.

Bheir sinn sùil air na grafaichean cleachdaidh cuir a-steach / toradh (I / O):

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: VictoriaMetrics - Cuir a-steach cleachdadh I/O deuchainn airson metrics sònraichte 400K.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: InfluxDB - Cuir a-steach deuchainn cleachdadh I/O airson metrics sònraichte 400K.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: TimescaleDB - Cuir a-steach cleachdadh I/O deuchainn airson metrics sònraichte 400K.

Tha e a-nis soilleir gu bheil TimescaleDB a’ ruighinn a chrìoch I/O, agus mar sin chan urrainn dha na 12 vCPU a tha air fhàgail a chleachdadh.

Sreath ùine sònraichte 4M

Tha sreath ùine 4M a’ coimhead beagan dùbhlanach. Ach bidh na farpaisich againn a’ dol seachad air an deuchainn seo gu soirbheachail. Toraidhean comharrachaidh:

  • VictoriaMetrics: 2,2M puingean dàta gach diog; Cleachdadh RAM: 6 GB; meud an dàta mu dheireadh air diosc: 3 GB.
  • InfluxDB: puingean dàta 330K gach diog; Cleachdadh RAM: 20,5 GB; meud an dàta mu dheireadh air diosc: 18,4 GB.
  • Raon-amaDB: puingean dàta 480K gach diog; Cleachdadh RAM: 2,5 GB; meud an dàta mu dheireadh air diosc: 52 GB.

Thuit coileanadh InfluxDB bho phuingean dàta 1,2M gach diog airson sreath ùine 400K gu puingean dàta 330K gach diog airson sreath ùine 4M. Is e call coileanaidh mòr a tha seo an taca ri farpaisich eile. Bheir sinn sùil air grafaichean cleachdadh CPU gus bun-adhbhar a’ chall seo a thuigsinn:

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: VictoriaMetrics - cleachdadh CPU rè deuchainn cuir a-steach airson sreath ùine 4M sònraichte.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: InfluxDB - cleachdadh CPU rè deuchainn cuir a-steach airson sreath ùine 4M sònraichte.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: TimescaleDB - cleachdadh CPU rè deuchainn cuir a-steach airson sreath ùine 4M sònraichte.

Bidh VictoriaMetrics a’ cleachdadh cha mhòr a h-uile cumhachd aonad giullachd (CPU). Tha an tuiteam aig an deireadh a’ freagairt ris na co-aonaidhean LSM a tha air fhàgail às deidh an dàta gu lèir a chuir a-steach.

Bidh InfluxDB a’ cleachdadh dìreach 8 de 16 vCPUn, agus bidh TimsecaleDB a’ cleachdadh 4 de 16 vCPUn. Dè a tha cumanta aig na grafaichean aca? Co-roinn àrd iowait, a tha a-rithist a’ nochdadh cnap-starra I/O.

Tha cuibhreann àrd aig TimescaleDB system. Tha sinn a 'gabhail ris gun do dh' adhbhraich cumhachd àrd mòran fiosan siostam no mòran lochdan beaga duilleag.

Bheir sinn sùil air na grafaichean tro chuir a-steach diosc:

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: VictoriaMetrics - A’ cleachdadh leud-bann diosc gus metrics sònraichte 4M a chuir a-steach.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: InfluxDB - A’ cleachdadh leud-bann diosc gus metrics sònraichte 4M a chuir a-steach.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: TimescaleDB - A’ cleachdadh leud-bann diosc gus metrics sònraichte 4M a chuir a-steach.

Ràinig VictoriaMetrics crìoch de 120 MB / s aig an ìre as àirde, agus b’ e an astar sgrìobhaidh cuibheasach 40 MB / s. Tha e coltach gun deach grunn fusions LSM trom a dhèanamh aig an ìre as àirde.

Bidh InfluxDB a-rithist a’ brùthadh a-mach trochur sgrìobhaidh cuibheasach de 200 MB / s le stùcan suas ri 340 MB / s air diosc le crìoch sgrìobhaidh de 120 MB / s :)

Chan eil Clàr-amaDB cuingealaichte ri diosc tuilleadh. Tha e coltach gu bheil e cuingealaichte le rudeigin eile co-cheangailte ri co-roinn àrd системной CPU luchdachadh.

Nach toir sinn sùil air na grafaichean cleachdaidh IO:

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: VictoriaMetrics - A’ cleachdadh I/O rè deuchainn cuir a-steach airson sreath ùine 4M sònraichte.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: InfluxDB - A’ cleachdadh I/O rè deuchainn cuir a-steach airson sreath ùine 4M sònraichte.

Slat-tomhais TSDB àrd-choileanadh VictoriaMetrics vs TimescaleDB vs InfluxDB

Gu h-àrd tha dealbh-sgrìn: TimescaleDB - cleachdadh I/O rè deuchainn cuir a-steach airson sreath ùine 4M gun samhail.

Tha pàtrain cleachdaidh IO mar sgàthan air an fheadhainn aig leud-bann diosc - tha InfluxDB IO cuibhrichte, fhad ‘s a tha goireasan IO a bharrachd aig VictoriaMetrics agus TimescaleDB.

Sreath ùine sònraichte 40M

Bha sreath ùine sònraichte 40M ro mhòr airson InfluxDB :)

Toraidhean comharrachaidh:

  • VictoriaMetrics: 1,7M puingean dàta gach diog; Cleachdadh RAM: 29 GB; Cleachdadh àite diosc: 17 GB.
  • InfluxDB: Cha do chrìochnaich e oir bha feum air barrachd air 60GB de RAM.
  • Raon-amaDB: puingean dàta 330K gach diog, cleachdadh RAM: 2,5 GB; Cleachdadh àite diosc: 84GB.

Tha TimescaleDB a’ sealltainn cleachdadh RAM air leth ìosal agus seasmhach aig 2,5 GB - an aon rud ris na meatrach sònraichte 4M agus 400K.

Chaidh VictoriaMetrics suas gu slaodach aig ìre 100k puingean dàta gach diog gus an deach a h-uile ainm meatrach le tag 40M a phròiseasadh. Choilean e an uairsin ìre cuir a-steach seasmhach de 1,5-2,0M puingean dàta gach diog, agus mar sin b’ e an toradh deireannach 1,7M puingean dàta gach diog.

Tha na grafaichean airson sreath ùine sònraichte 40M coltach ris na grafaichean airson sreath ùine sònraichte 4M, mar sin leig leinn an sgiobadh.

toraidhean

  • Tha TSDBn an latha an-diugh comasach air cuir a-steach airson milleanan de shreath ùine gun samhail air aon fhrithealaiche. Anns an ath artaigil, nì sinn deuchainn air dè cho math ‘s a tha TSDBn a’ coileanadh taghadh thar milleanan de shreath ùine gun samhail.
  • Mar as trice chan eil cleachdadh CPU gu leòr a’ nochdadh cnap-starra I/O. Is dòcha gu bheil e cuideachd a’ nochdadh gu bheil am bacadh ro gharbh, le dìreach beagan snàithleanan comasach air ruith aig an aon àm.
  • Tha an cnap-starra I / O ann, gu sònraichte ann an stòradh neo-SSD leithid innealan bloca brìgheil solaraichean sgòthan.
  • Tha VictoriaMetrics a’ toirt seachad an optimization as fheàrr airson stòradh slaodach, ìosal I / O. Bheir e seachad an astar as fheàrr agus an co-mheas teannachaidh as fheàrr.

Luchdaich sìos Ìomhaigh aon-fhrithealaiche VictoriaMetrics agus feuch e air an dàta agad. Tha am binary statach co-fhreagarrach ri fhaighinn aig GitHub.

Leugh tuilleadh mu VictoriaMetrics ann an seo artaigil.

Ùrachadh: air fhoillseachadh artaigil a’ dèanamh coimeas eadar cuir a-steach coileanadh VictoriaMetrics le InfluxDB le toraidhean ath-ghinte.

Ùrachadh #2: Leugh cuideachd artaigil air scalability dìreach VictoriaMetrics vs InfluxDB vs TimescaleDB.

Ùrachadh #3: Tha VictoriaMetrics a-nis na stòr fosgailte!

Còmhradh teileagram: https://t.me/VictoriaMetrics_ru1

Source: www.habr.com

Cuir beachd ann