Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Ua hoʻohālikelike ʻia ʻo VictoriaMetrics, TimescaleDB a me InfluxDB ma ʻatikala mua ma kahi waihona me nā helu ʻikepili pili i ka 40K pūʻulu manawa kūʻokoʻa.

I kekahi mau makahiki i hala aku nei aia kahi au o Zabbix. ʻAʻole i ʻoi aku ka nui o nā hōʻailona o kēlā me kēia kikowaena metala - hoʻohana CPU, hoʻohana RAM, hoʻohana disk a me ka hoʻohana pūnaewele. ʻO kēia ala, hiki i nā metric mai nā kaukani o nā kikowaena ke komo i loko o 40 tausani mau manawa kūʻokoʻa, a hiki iā Zabbix ke hoʻohana i MySQL ma ke ʻano he backend no ka ʻikepili o ka manawa :)

I kēia manawa wale nō node_exporter me nā hoʻonohonoho paʻamau e hāʻawi aku ma luna o 500 metrics ma ka awelika host. He nui nā mea kūʻai aku no nā ʻikepili like ʻole, nā kikowaena pūnaewele, nā ʻōnaehana lako, a me nā mea ʻē aʻe. ʻO nā mea a pau ʻoi aku ka nui o nā noi hoʻomaka e hoʻonoho i nā hōʻailona like ʻole no lākou iho. Aia nā Kubernetes me nā pūʻulu a me nā pods e hōʻike ana i nā metric he nui. ʻO kēia ka hopena i nā kikowaena e hōʻike ana i nā tausani o nā metric kūʻokoʻa i kēlā me kēia host. No laila, ʻaʻole mana kiʻekiʻe ka mana o ka manawa 40K. Ke lilo nei ia i mea nui a pono e lawelawe maʻalahi ʻia e kekahi TSDB hou ma kahi kikowaena hoʻokahi.

He aha ka nui o nā pūʻulu manawa kūikawā i kēia manawa? 400K a i ʻole 4M paha? A i ʻole 40m? E hoʻohālikelike kākou i nā TSDB hou i kēia mau helu.

Ke kau ʻana i kahi hōʻailona

TSBS he mea hana benchmarking maikaʻi loa no TSDBs. Hāʻawi ia iā ʻoe e hoʻohua i kahi helu kūʻokoʻa o nā metric ma ka hāʻawi ʻana i ka helu i koi ʻia o ka manawa manawa i puʻunaue ʻia e 10 - hae. -kaulike (mua -scale-var). ʻO 10 ka helu o nā ana (metrics) i hana ʻia ma kēlā me kēia host a i ʻole server. Ua hana ʻia nā ʻikepili ma hope me ka hoʻohana ʻana i ka TSBS no ka benchmark:

  • ʻO 400K pūʻulu manawa kūʻokoʻa, 60 kekona kekona ma waena o nā helu ʻikepili, ʻike ʻia ka ʻikepili i nā lā 3 piha, ~ 1.7B ka nui o nā helu ʻikepili.
  • ʻO 4M pūʻulu manawa kūʻokoʻa, 600 kekona kekona, ʻike ʻike i 3 mau lā piha, ~1.7B ka helu helu helu.
  • 40M pūʻulu manawa kūʻokoʻa, 1 hola kaʻawale, ʻike ka ʻikepili i nā lā 3 piha, ~ 2.8B ka helu helu helu.

Ke holo nei ka mea kūʻai aku a me ke kikowaena i nā manawa i hoʻolaʻa ʻia n1-maʻamau-16 ma ke ao Google. Loaʻa i kēia mau hiʻohiʻona nā hoʻonohonoho penei:

  • vCPU: 16
  • RAM: 60 GB
  • Waihona: 1TB HDD maʻamau. Hāʻawi ia i ka 120 Mbps heluhelu/kākau throughput, 750 heluhelu i kēlā me kēia kekona a me 1,5K kākau i kekona.

Ua lawe ʻia nā TSDB mai nā kiʻi docker mana a holo i loko o ka docker me kēia mau hoʻonohonoho:

  • VictoriaMetrics:

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

  • Pono nā waiwai InfluxDB (-e) e kākoʻo i ka mana kiʻekiʻe. E ʻike i nā kikoʻī ma palapala):

    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 (hoʻonohonoho i lawe ʻia mai ia waihona):

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

Ua holo ʻia ka mea hoʻoili ʻikepili me 16 mau kaula like.

Loaʻa i kēia ʻatikala nā hualoaʻa no nā hōʻailona hoʻokomo. E paʻi ʻia nā hopena o ka papa kuhikuhi koho ma kahi ʻatikala ʻokoʻa.

400K pūʻulu manawa kūʻokoʻa

E hoʻomaka kākou me nā mea maʻalahi - 400K. Nā hualoaʻa hōʻailona:

  • VictoriaMetrics: 2,6M mau helu ʻikepili i kēlā me kēia kekona; Hoʻohana RAM: 3 GB; ka nui ʻikepili hope ma ka disk: 965 MB
  • InfluxDB: 1.2M mau helu helu i kēlā me kēia kekona; Hoʻohana RAM: 8.5 GB; ka nui ʻikepili hope ma ka disk: 1.6 GB
  • Manawa: 849K mau helu ʻikepili i kēlā me kēia kekona; Hoʻohana RAM: 2,5 GB; ka nui ʻikepili hope ma ka disk: 50 GB

E like me kāu e ʻike ai mai nā hopena ma luna, lanakila ʻo VictoriaMetrics i ka hoʻokomo ʻana i ka hana a me ka hoʻohālikelike ʻana. Ua lanakila ka Timeline ma ka hoʻohana ʻana i ka RAM, akā hoʻohana ia i ka nui o ka disk space - 29 bytes no kēlā me kēia helu data.

Aia ma lalo iho nā kiʻi hoʻohana CPU no kēlā me kēia TSDB i ka wā o ka benchmark:

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: VictoriaMetrics - hoʻouka CPU i ka wā o ka hoʻokomo ʻana no kahi metric 400K kūʻokoʻa.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: InfluxDB - hoʻouka CPU i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no ka metric kūʻokoʻa 400K.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: TimescaleDB - hoʻouka CPU i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no kahi metric kūʻokoʻa o 400K.

Hoʻohana ʻo VictoriaMetrics i nā vCPU āpau i loaʻa, ʻoiai ʻo InfluxDB underutilizes ~ 2 o 16 vCPUs.

Hoʻohana wale ka Timescale i 3-4 o nā vCPU 16. Hōʻike nā ʻāpana kiʻekiʻe o ka iowait a me ka ʻōnaehana ma ka TimescaleDB timescale graph i kahi bottleneck i loko o ka subsystem input/output (I/O). E nānā kākou i nā kiʻi hoʻohana bandwidth disk:

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna ke kiʻi kiʻi: VictoriaMetrics - Hoʻohana ʻana i ka Bandwidth Disk i ka hoʻāʻo hoʻokomo ʻana no nā ʻano ʻokoʻa 400K.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: InfluxDB - Hoʻohana ʻia ʻo Disk Bandwidth ma ka hoʻāʻo hoʻokomo ʻana no nā Metric Unique 400K.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: TimescaleDB - Hoʻohana ʻia ʻo Disk Bandwidth ma ka hoʻāʻo hoʻokomo ʻana no nā Metric Unique 400K.

Hoʻopaʻa ʻo VictoriaMetrics i ka ʻikepili ma 20 Mbps me nā kiʻekiʻe a hiki i 45 Mbps. Kūlike nā piko i nā hui ʻāpana nui o ka lāʻau NGO.

Kākau ʻo InfluxDB i ka ʻikepili ma 160 MB/s, ʻoiai he 1 TB drive pono e kaupalena ʻia kākau i ka throughput 120 MB/s.

Ua kaupalena ʻia ʻo TimescaleDB e kākau i ka throughput o 120 Mbps, akā i kekahi manawa ua haki ia i kēia palena a hiki i ka 220 Mbps i nā waiwai kiʻekiʻe. Pili kēia mau piko i nā awāwa o ka lawa ʻole o ka hoʻohana ʻana i ka CPU ma ka pakuhi mua.

E nānā kākou i nā kiʻi hoʻohana hoʻokomo/puka (I/O):

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi paʻi kiʻi: VictoriaMetrics - Hoʻokomo i ka hoʻohana I/O hoʻāʻo no 400K mau ana kū hoʻokahi.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi paʻi kiʻi: InfluxDB - E hoʻokomo i ka hoʻohana I/O hoʻāʻo no 400K mau metric kūʻokoʻa.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi paʻi: TimescaleDB - Hoʻokomo i ka hoʻohana I/O hoʻāʻo no 400K mau ana kū hoʻokahi.

Ua maopopo i kēia manawa ke hiki nei ʻo TimescaleDB i kona palena I/O, no laila ʻaʻole hiki iā ia ke hoʻohana i nā 12 vCPU i koe.

4M pūʻulu manawa kūʻokoʻa

He mea paʻakikī loa ka 4M time series. Akā ʻo kā mākou poʻe hoʻokūkū e hele kūleʻa i kēia hoʻokolohua. Nā hualoaʻa hōʻailona:

  • VictoriaMetrics: 2,2M mau helu ʻikepili i kēlā me kēia kekona; Hoʻohana RAM: 6 GB; ka nui ʻikepili hope ma ka disk: 3 GB.
  • InfluxDB: 330K mau helu helu i kēlā me kēia kekona; Hoʻohana RAM: 20,5 GB; ka nui ʻikepili hope loa ma ka disk: 18,4 GB.
  • TimescaleDB: 480K mau helu ʻikepili i kēlā me kēia kekona; Hoʻohana RAM: 2,5 GB; ka nui ʻikepili hope ma ka disk: 52 GB.

Ua hāʻule ka hana InfluxDB mai 1,2M mau helu ʻikepili i kēlā me kēia kekona no kahi 400K manawa moʻo a i 330K mau helu ʻikepili i kēlā me kēia kekona no kahi moʻo manawa 4M. He poho hana nui kēia i hoʻohālikelike ʻia me nā mea hoʻokūkū ʻē aʻe. E nānā kākou i nā kiʻi hoʻohana CPU e hoʻomaopopo i ke kumu kumu o kēia poho:

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna ke kiʻi kiʻi: VictoriaMetrics - hoʻohana ʻana i ka CPU i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no ka moʻo manawa 4M kūʻokoʻa.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna ke kiʻi kiʻi: InfluxDB - ka hoʻohana ʻana i ka CPU i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no ka moʻo manawa 4M kūʻokoʻa.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: TimescaleDB - ka hoʻohana ʻana i ka CPU i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no kahi moʻo manawa 4M kūʻokoʻa.

Hoʻohana ʻo VictoriaMetrics i ka mana o ka mana hana (CPU). ʻO ka hāʻule ma ka hopena e pili ana i nā hui LSM i koe ma hope o ka hoʻokomo ʻana i nā ʻikepili āpau.

Hoʻohana ʻo InfluxDB i 8 o 16 vCPU wale nō, ʻoiai hoʻohana ʻo TimsecaleDB i 4 o 16 vCPU. He aha ka like o kā lākou mau pakuhi? Māhele kiʻekiʻe iowait, e hōʻike hou ana i kahi bottleneck I/O.

He kaʻana kiʻekiʻe ko TimescaleDB system. Manaʻo mākou ua hopena ka mana kiʻekiʻe i nā kelepona ʻōnaehana he nui a nui paha nā hewa ʻaoʻao liʻiliʻi.

E nānā kākou i nā kiʻi pākuʻi disk throughput:

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: VictoriaMetrics - Ke hoʻohana nei i ka bandwidth disk e hoʻokomo i nā metric kūʻokoʻa 4M.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: InfluxDB - Ke hoʻohana nei i ka bandwidth disk e hoʻokomo i nā metric kūʻokoʻa 4M.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi kiʻi: TimescaleDB - Ke hoʻohana nei i ka bandwidth disk e hoʻokomo i nā metric kūʻokoʻa 4M.

Ua hōʻea ʻo VictoriaMetrics i ka palena o 120 MB/s ma ka piko, ʻoiai ʻo ka awelika o ka wikiwiki kākau ʻana he 40 MB/s. Malia paha ua hana ʻia kekahi mau fusion LSM koʻikoʻi i ka wā o ka piko.

Hoʻopili hou ʻo InfluxDB i kahi helu kākau maʻamau o 200 MB/s me nā kiʻekiʻe a hiki i 340 MB/s ma kahi disk me ka palena kākau o 120 MB/s :)

ʻAʻole i kaupalena ʻia ʻo TimescaleDB. ʻIke ʻia e kaupalena ʻia e kekahi mea ʻē aʻe e pili ana i ka nui kiʻekiʻe системной Haawe CPU.

E nānā kākou i nā kiʻi hoʻohana IO:

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi paʻi kiʻi: VictoriaMetrics - Ke hoʻohana nei i ka I/O i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no kahi moʻo manawa 4M kūʻokoʻa.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi paʻi kiʻi: InfluxDB - Ke hoʻohana nei i ka I/O i ka wā o ka hoʻokomo ʻana i ka hoʻāʻo no kahi moʻo manawa 4M kūʻokoʻa.

Hōʻailona TSDB kūlana kiʻekiʻe VictoriaMetrics vs TimescaleDB vs InfluxDB

Aia ma luna kahi kiʻi paʻi kiʻi: TimescaleDB - hoʻohana I/O i ka hoʻokomo ʻana i ka hoʻāʻo no ka moʻo manawa 4M kūʻokoʻa.

Hoʻohālikelike nā hiʻohiʻona hoʻohana IO i ka bandwidth disk - He palena ʻo InfluxDB ʻo IO, ʻoiai ʻo VictoriaMetrics a me TimescaleDB he mau kumuwaiwai IO.

40M pūʻulu manawa kūʻokoʻa

Nui loa ka 40M mau manawa kūʻokoʻa no InfluxDB :)

Nā hualoaʻa hōʻailona:

  • VictoriaMetrics: 1,7M mau helu ʻikepili i kēlā me kēia kekona; Hoʻohana RAM: 29 GB; Hoʻohana wahi disk: 17 GB.
  • InfluxDB: ʻAʻole i pau no ka mea e koi ana ma mua o 60GB o RAM.
  • TimescaleDB: 330K mau helu ʻikepili i kēlā me kēia kekona, hoʻohana RAM: 2,5 GB; Hoʻohana wahi disk: 84GB.

Hōʻike ʻo TimescaleDB i ka haʻahaʻa haʻahaʻa a paʻa i ka hoʻohana ʻana i ka RAM ma 2,5 GB - e like me nā metric kūʻokoʻa 4M a me 400K.

Ua piʻi mālie ʻo VictoriaMetrics ma kahi o 100K mau helu ʻikepili i kēlā me kēia kekona a hiki i ka hana ʻia ʻana o nā inoa metric 40M a pau. A laila loaʻa iā ia ka helu hoʻokomo hoʻomau o 1,5-2,0M mau helu ʻikepili i kēlā me kēia kekona, no laila ʻo ka hopena hope loa he 1,7M mau helu ʻikepili i kekona.

Ua like nā kiʻi no 40M pūʻulu manawa kūʻokoʻa me nā pakuhi no 4M pūʻulu manawa kūʻokoʻa, no laila e hoʻokuʻu iā lākou.

haʻina

  • Hiki i nā TSDB hou ke hana i nā mea hoʻokomo no nā miliona o ka manawa kūʻokoʻa ma kahi kikowaena hoʻokahi. Ma ka ʻatikala aʻe, e hoʻāʻo mākou i ka maikaʻi o ka TSDBs i ke koho ʻana ma waena o nā miliona o ka manawa kūʻokoʻa.
  • ʻAʻole lawa ka hoʻohana ʻana i ka CPU e hōʻike pinepine i kahi bottleneck I/O. Hiki ke hōʻike ʻia he koʻikoʻi loa ka paʻa ʻana, me nā kaula liʻiliʻi wale nō e holo i ka manawa.
  • Loaʻa ka bottleneck I/O, ʻoi aku ka nui ma ka waiho ʻole SSD e like me nā polokalamu poloka virtualized cloud providers.
  • Hāʻawi ʻo VictoriaMetrics i ka loiloi maikaʻi loa no ka mālama ʻana i ka I/O lohi, haʻahaʻa. Hāʻawi ia i ka wikiwiki maikaʻi loa a me ka ratio hoʻopiʻi maikaʻi loa.

Hoʻoiho VictoriaMetrics kiʻi kikowaena hoʻokahi a ho'āʻo ma kāu ʻikepili. Loaʻa ka binary static pili ma GitHub.

E heluhelu hou e pili ana iā VictoriaMetrics i kēia 'ōlelo.

Hou: paʻi ʻia ʻatikala e hoʻohālikelike ana i ka hana hoʻokomo o VictoriaMetrics me InfluxDB me nā hopena hiki ke hana hou ʻia.

Hou #2: Heluhelu pū ʻatikala e pili ana i ka scalability vertical VictoriaMetrics vs InfluxDB vs TimescaleDB.

Hōʻano hou #3: ʻO VictoriaMetrics ke kumu wehe!

Kamaʻilio Telegram: https://t.me/VictoriaMetrics_ru1

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka