VictoriaMetrics, TimescaleDB uye InfluxDB yakaenzaniswa mukati
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
Ndeipi nhamba huru yenguva dzakasiyana panguva ino? Pamwe 400K kana 4M? Kana kuti 40m? Ngatienzanise maTSDB emazuva ano kune idzi nhamba.
Kuisa bhenji
-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
- 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:
Pamusoro pane skrini: VictoriaMetrics - CPU mutoro panguva yekuisa bvunzo yeyakasarudzika 400K metric.
Pamusoro pane skrini: InfluxDB - CPU mutoro panguva yekuisa bvunzo yeyakasarudzika metric 400K.
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:
Pamusoro pane skrini: VictoriaMetrics - Disk Bandwidth Usage muInsertion Test yeUnique Metrics 400K.
Pamusoro pane skrini: InfluxDB - Disk Bandwidth Usage paInsertion Test yeUnique Metrics 400K.
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
InfluxDB inonyora data pa160 MB/s, ukuwo 1 TB drive
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:
Pamusoro pane skrini: VictoriaMetrics - Isa bvunzo I/O kushandiswa kwe400K akasiyana metrics.
Pamusoro pane skrini: InfluxDB - Isa bvunzo I/O kushandiswa kwe400K yakasarudzika metrics.
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:
Pamusoro pane skrini: VictoriaMetrics - CPU kushandiswa panguva yekuisa bvunzo kune yakasarudzika 4M nguva nhevedzano.
Pamusoro pane skrini: InfluxDB - CPU kushandiswa panguva yekuisa bvunzo yeyakasarudzika 4M nguva yakatevedzana.
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
Ngatitarisei iyo disk throughput magirafu:
Pamusoro pane skrini: VictoriaMetrics - Kushandisa disk bandwidth kuisa 4M yakasarudzika metrics.
Pamusoro pane skrini: InfluxDB - Kushandisa disk bandwidth kuisa 4M yakasarudzika metrics.
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:
Pamusoro pane skrini: VictoriaMetrics - Kushandisa I/O panguva yekuisa bvunzo kune yakasarudzika 4M nguva yakatevedzana.
Pamusoro pane skrini: InfluxDB - Kushandisa I/O panguva yekuisa bvunzo kune yakasarudzika 4M nguva yakatevedzana.
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
Verenga zvakawanda nezve VictoriaMetrics mune izvi
Update: rakabudiswa
Kwidziridzo #2: Verenga zvakare
Update #3:
Telegraph chat:
Source: www.habr.com