Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimescaleDB uye InfluxDB yakaenzaniswa mukati nyaya yapfuura pane dataset ine bhiriyoni data mapoinzi e40K yakasarudzika nguva yakatevedzana.

Makore mashoma apfuura pakanga paine nguva yeZabbix. Imwe neimwe isina simbi sevha yaive isina anopfuura mashoma zviratidzo - CPU kushandiswa, RAM kushandiswa, disk kushandiswa uye kushandiswa kwetiweki. Nenzira iyi, metrics kubva kuzviuru zvemasevha anogona kukwana mumakumi mana ezviuru akasiyana nguva akateedzana, uye Zabbix inogona kushandisa MySQL senge yekumashure yenguva yakatevedzana data :)

Parizvino ndega node_exporter ine default configurations inopa pamusoro pe500 metrics paavhareji host. Kune dzakawanda vatengesi kunze kwenyika kune akasiyana dhatabhesi, maseva ewebhu, masisitimu ehardware, nezvimwe. Izvo zvese zvinopa akasiyana-siyana anobatsira metrics. Zvose akawanda uye akawanda maapplication tanga kuzvimisira zviratidzo zvakasiyana-siyana. Kune Kubernetes ane masumbu uye mapodhi anofumura akawanda metrics. Izvi zvinoita kuti maseva afumure zviuru zvemametric akasarudzika pamunhu wese. Saka iyo yakasarudzika 40K nguva yakatevedzana haisisiri simba repamusoro. Iri kuita mukurumbira uye inofanirwa kubatwa zviri nyore nechero yemazuva ano TSDB pane imwe sevha.

Ndeipi nhamba huru yenguva dzakasiyana panguva ino? Pamwe 400K kana 4M? Kana kuti 40m? Ngatienzanise maTSDB emazuva ano kune idzi nhamba.

Kuisa bhenji

TSBS chishandiso chakanakisa chekuenzanisa neTSDBs. Iyo inokutendera kuti ugadzire nhamba yekupokana yemametrics nekupfuura iyo inodiwa nhamba yenguva yakakamurwa negumi - mureza. -scale (kare -scale-var) 10 ndiyo nhamba yezviyero (metrics) inogadzirwa pane yega yega saiti kana sevha. Aya anotevera dataset akagadzirwa uchishandisa TSBS yebhenji:

  • 400K yakasarudzika nguva yakatevedzana, 60 yechipiri kupindirana pakati pe data data, data inotora mazuva matatu akazara, ~ 3B huwandu hwehuwandu hwe data data.
  • 4M yakasarudzika nguva yakatevedzana, 600 yechipiri kupindirana, data inotora mazuva matatu akazara, ~ 3B huwandu hwehuwandu hwe data data.
  • 40M yakasarudzika nguva yakatevedzana, 1 awa kupindirana, data inotora mazuva matatu akazara, ~ 3B huwandu hwehuwandu hwe data data.

Mutengi uye sevha vaimhanya panguva dzakatsaurirwa n1-chiyero-16 muGoogle Cloud. Mamiriro aya aive nemagadzirirwo anotevera:

  • vCPUs: 16
  • RAM: 60 GB
  • Kuchengetedza: Standard 1TB HDD. Inopa 120 Mbps kuverenga / kunyora throughput, 750 kuverenga mashandiro pasekondi uye 1,5K inonyora pasekondi.

TSDBs dzakatorwa kubva kumifananidzo yedocker yepamutemo uye inomhanya mudocker ine zvinotevera zvigadziriso:

  • VictoriaMetrics:

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

  • InfluxDB (-e) kukosha kunodiwa kutsigira simba repamusoro. Ona ruzivo mukati zvinyorwa):

    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 (kugadziriswa kwakatorwa kubva izvozvo faira):

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

Iyo data loader yaiitwa ne 16 parallel threads.

Chinyorwa ichi chine mibairo yekuisa mabenchmark chete. Mhedzisiro yesarudzo yebhenji ichaburitswa mune imwe chinyorwa.

400K yakasarudzika nguva yakatevedzana

Ngatitange nezvinhu zviri nyore - 400K. Benchmark results:

  • VictoriaMetrics: 2,6M data points pasekondi; RAM kushandiswa: 3 GB; Saizi yekupedzisira yedata padhisiki: 965 MB
  • InfluxDB: 1.2M data points pasekondi; RAM kushandiswa: 8.5 GB; saizi yekupedzisira yedata pa diski: 1.6 GB
  • Timecale: 849K data points pasekondi; RAM kushandiswa: 2,5 GB; saizi yekupedzisira yedata pa diski: 50 GB

Sezvauri kuona kubva pane zvawanikwa pamusoro, VictoriaMetrics inohwina mukupinza kuita uye compression ratio. Nguva yenguva inokunda mukushandiswa kwe RAM, asi inoshandisa yakawanda dhisiki nzvimbo - 29 bytes pane imwe data point.

Pazasi pane maCPU ekushandisa magirafu kune imwe neimwe yeTSDB panguva yebhenji:

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: VictoriaMetrics - CPU mutoro panguva yekuisa bvunzo yeyakasarudzika 400K metric.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: InfluxDB - CPU mutoro panguva yekuisa bvunzo yeyakasarudzika metric 400K.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: TimescaleDB - CPU mutoro panguva yekuisa bvunzo yeyakasarudzika metric ye400K.

VictoriaMetrics inoshandisa ese aripo vCPU, nepo InfluxDB isingashandisi ~ 2 kunze kwegumi nematanhatu vCPU.

Timecale inoshandisa chete 3-4 ye16 vCPUs. Yakakwira zvikamu zveiowait uye sisitimu muTimescaleDB timecale graph inoratidza bhodhoro mune yekupinza/kubuda (I/O) subsystem. Ngatitarisei magirafu ekushandisa dhisiki bandwidth:

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: VictoriaMetrics - Disk Bandwidth Usage muInsertion Test yeUnique Metrics 400K.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: InfluxDB - Disk Bandwidth Usage paInsertion Test yeUnique Metrics 400K.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane mufananidzo wepikicha: TimescaleDB - Disk Bandwidth Usage paInsertion Test yeUnique Metrics 400K.

VictoriaMetrics inorekodha data pa20 Mbps ine peaks kusvika 45 Mbps. Nhengo dzepamusoro dzinoenderana nekubatana kukuru kwemuti NGO.

InfluxDB inonyora data pa160 MB/s, ukuwo 1 TB drive inofanira kuganhurirwa nyora kuburitsa 120 MB/s.

TimescaleDB inogumira pakunyora throughput ye120 Mbps, asi dzimwe nguva inotyora muganho uyu uye inosvika 220 Mbps mumhando yepamusoro. Aya nhongonya anoenderana nemipata yekusakwana kweCPU kushandiswa mune yapfuura girafu.

Ngatitarisei iyo yekupinda/inoburitsa (I/O) magirafu ekushandisa:

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: VictoriaMetrics - Isa bvunzo I/O kushandiswa kwe400K akasiyana metrics.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: InfluxDB - Isa bvunzo I/O kushandiswa kwe400K yakasarudzika metrics.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: TimescaleDB - Isa bvunzo I/O kushandiswa kwe400K akasiyana metrics.

Izvozvi zvave pachena kuti TimescaleDB yave kusvika I/O muganho, saka haigone kushandisa gumi nemaviri vCPU asara.

4M yakasarudzika nguva inoteedzana

4M nguva yakatevedzana inotarisa zvishoma inonetsa. Asi vakwikwidzi vedu vakapasa bvunzo iyi zvinobudirira. Benchmark results:

  • VictoriaMetrics: 2,2M data points pasekondi; RAM kushandiswa: 6 GB; saizi yekupedzisira yedata pa diski: 3 GB.
  • InfluxDB: 330K data points pasekondi; RAM kushandiswa: 20,5 GB; saizi yekupedzisira yedata pa diski: 18,4 GB.
  • TimescaleDB: 480K data points pasekondi; RAM kushandiswa: 2,5 GB; saizi yekupedzisira yedata pa diski: 52 GB.

InfluxDB performance yakadzikira kubva pa1,2M data points pasekondi ye400K time series kusvika 330K data points pasekondi ye4M time series. Uku kurasikirwa kwakakosha kwekuita zvichienzaniswa nevamwe vakwikwidzi. Ngatitarisei kuCPU magirafu ekushandisa kuti tinzwisise chikonzero chekurasikirwa uku:

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: VictoriaMetrics - CPU kushandiswa panguva yekuisa bvunzo kune yakasarudzika 4M nguva nhevedzano.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: InfluxDB - CPU kushandiswa panguva yekuisa bvunzo yeyakasarudzika 4M nguva yakatevedzana.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: TimescaleDB - CPU kushandiswa panguva yekuisa bvunzo kune yakasarudzika 4M nguva nhevedzano.

VictoriaMetrics inoshandisa rinenge rese rekugadzirisa unit (CPU) simba. Kudonhedza kumagumo kunopindirana neLSM yasara inobatana mushure mekunge data yese yaiswa.

InfluxDB inoshandisa 8 chete yegumi nematanhatu vCPU, nepo TimsecaleDB inoshandisa 16 yegumi nematanhatu vCPU. Ko magirafu avo akafanana papi? High share iowait, iyo inoratidza zvakare I / O bhodhoro.

TimescaleDB ine chikamu chepamusoro system. Isu tinofungidzira kuti simba repamusoro rakakonzera akawanda system mafoni kana akawanda madiki peji kukanganisa.

Ngatitarisei iyo disk throughput magirafu:

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: VictoriaMetrics - Kushandisa disk bandwidth kuisa 4M yakasarudzika metrics.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: InfluxDB - Kushandisa disk bandwidth kuisa 4M yakasarudzika metrics.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: TimescaleDB - Kushandisa dhisiki bandwidth kuisa 4M yakasarudzika metrics.

VictoriaMetrics yakasvika painogumira 120 MB/s pakakwirira, nepo avhareji yekumhanyisa kumhanya yaive 40 MB/s. Zvingangodaro kuti akati wandei anorema LSM fusions akaitwa panguva yepamusoro.

InfluxDB zvakare inosvina avhareji yekunyora kwe200 MB/s nenhoo dzinosvika 340 MB/s padhisiki ine muganho wekunyora we120 MB/s :)

TimescaleDB haisisiri dhisiki yakaganhurwa. Inoratidzika kunge inoganhurirwa nechimwe chinhu chine chekuita nehupamhi hwepamusoro систСмной CPU mutoro.

Ngatitarisei magirafu ekushandiswa kweIO:

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: VictoriaMetrics - Kushandisa I/O panguva yekuisa bvunzo kune yakasarudzika 4M nguva yakatevedzana.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: InfluxDB - Kushandisa I/O panguva yekuisa bvunzo kune yakasarudzika 4M nguva yakatevedzana.

Yepamusoro-inoshanda TSDB bhenji VictoriaMetrics vs TimescaleDB vs InfluxDB

Pamusoro pane skrini: TimescaleDB - I/O kushandiswa panguva yekuisa bvunzo yeyakasarudzika 4M nguva yakatevedzana.

IO mashandisirwo emaitiro anoratidza iwo edhisiki bandwidth - InfluxDB iIO inogumira, nepo VictoriaMetrics neTimescaleDB vane zviwanikwa zveIO.

40M yakasarudzika nguva inoteedzana

40M yakasarudzika nguva yakatevedzana yaive yakakura kwazvo kune InfluxDB :)

Benchmark results:

  • VictoriaMetrics: 1,7M data points pasekondi; RAM kushandiswa: 29 GB; Kushandiswa kwedhisiki nzvimbo: 17 GB.
  • InfluxDB: Haina kupedza nekuti yaida kupfuura 60GB ye RAM.
  • TimescaleDB: 330K data points pasekondi, RAM kushandiswa: 2,5 GB; Kushandiswa kwedhisiki nzvimbo: 84GB.

TimescaleDB inoratidza yakaderera uye yakagadzikana kushandiswa kweRAM pa2,5 GB - yakafanana neyeyakasarudzika 4M uye 400K metrics.

VictoriaMetrics yakakwira zvishoma nezvishoma pamwero we100k data points pasekondi kusvika ese 40M akaiswa mazita emetric agadziriswa. Akabva awana chiyero chekuisa chakasimba che 1,5-2,0M data points pasekondi, saka mhedzisiro yekupedzisira yaive 1,7M data points pasekondi.

Iwo magirafu e40M akasarudzika nguva akateedzana akafanana nemagirafu e4M yakasarudzika nguva nhevedzano, saka ngatisvetuke iwo.

zvakawanikwa

  • Mazuva ano TSDBs anokwanisa kugadzirisa zvinoiswa kune mamirioni eakasiyana nguva akateedzana pane imwechete server. Muchinyorwa chinotevera, isu tichaedza kuti TSDBs inoita sei sarudzo mumamirioni eakasiyana nguva akateedzana.
  • Kusakwana kweCPU kushandiswa kazhinji kunoratidza I/O bhodhoro. Inogona zvakare kuratidza kuti kuvharika kwakanyanyisa, kuine tambo shoma dzinokwanisa kumhanya panguva.
  • Iyo I/O bhodhoro iripo, kunyanya mune isiri-SSD chengetedzo senge cloud providers 'virtualized block devices.
  • VictoriaMetrics inopa yakanakisa optimization yekunonoka, yakaderera I/O kuchengetedza. Inopa yakanyanya kumhanya uye yakanakisa compression reshiyo.

Download VictoriaMetrics single-server mufananidzo uye edza pane data rako. Iyo inoenderana static binary inowanikwa pa GitHub.

Verenga zvakawanda nezve VictoriaMetrics mune izvi chinyorwa.

Update: rakabudiswa chinyorwa kuenzanisa kuisa kuita kweVictoriaMetrics neInfluxDB ine zvibereko zvinogoneka.

Kwidziridzo #2: Verenga zvakare chinyorwa pane vertical scalability VictoriaMetrics vs InfluxDB vs TimescaleDB.

Update #3: VictoriaMetrics ikozvino yakavhurika sosi!

Telegraph chat: https://t.me/VictoriaMetrics_ru1

Source: www.habr.com

Voeg