High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimescaleDB thiab InfluxDB tau muab piv rau hauv tsab xov xwm dhau los ntawm dataset nrog ib billion cov ntaub ntawv ntsiab lus teej tug mus rau 40K tshwj xeeb lub sij hawm series.

Ob peb xyoos dhau los muaj ib lub sijhawm ntawm Zabbix. Txhua tus neeg rau zaub mov liab liab tsis muaj ntau tshaj li ob peb qhov ntsuas - kev siv CPU, kev siv RAM, kev siv disk thiab kev siv network. Txoj kev no, kev ntsuas los ntawm ntau txhiab tus neeg rau zaub mov tuaj yeem haum rau 40 txhiab lub sijhawm tshwj xeeb, thiab Zabbix tuaj yeem siv MySQL ua tus thaub qab rau cov ntaub ntawv teev sijhawm :)

Tam sim no ib leeg node_exporter nrog kev teeb tsa ua ntej muab ntau dua 500 metrics ntawm tus tswv tsev nruab nrab. Muaj ntau exporters rau ntau yam databases, web servers, hardware systems, etc. Lawv txhua tus muab ntau yam kev ntsuas muaj txiaj ntsig. Tag nrho ntau thiab ntau daim ntawv thov pib teeb tsa ntau yam ntsuas rau lawv tus kheej. Muaj Kubernetes nrog pawg thiab pods uas nthuav tawm ntau qhov kev ntsuas. Qhov no ua rau cov servers nthuav tawm ntau txhiab tus cim ntsuas ib tus tswv tsev. Yog li qhov tshwj xeeb 40K lub sij hawm series tsis muaj zog lawm. Nws tau dhau los ua qhov tseem ceeb thiab yuav tsum tau yooj yim los ntawm TSDB niaj hnub no ntawm ib tus neeg rau zaub mov.

Dab tsi yog qhov loj ntawm lub sijhawm tshwj xeeb ntawm lub sijhawm tam sim no? Tej zaum 400K lossis 4M? Los yog 40 m? Cia peb piv TSDBs niaj hnub rau cov lej no.

Txhim kho qhov ntsuas ntsuas

TSBS yog ib tug zoo benchmarking cuab tam rau TSDBs. Nws tso cai rau koj los tsim kom muaj tus naj npawb ntawm cov ntsuas ntsuas los ntawm kev hla tus lej yuav tsum tau muab faib los ntawm 10 - chij - nplai (yav dhau los -scale-var). 10 yog tus naj npawb ntawm kev ntsuas (metrics) tsim los ntawm txhua tus tswv tsev lossis server. Cov ntaub ntawv hauv qab no tau tsim los siv TSBS rau qhov ntsuas:

  • 400K lub sijhawm tshwj xeeb, 60 lub sijhawm thib ob ntawm cov ntaub ntawv cov ntsiab lus, cov ntaub ntawv nthuav tawm tag nrho 3 hnub, ~ 1.7B tag nrho cov ntaub ntawv cov ntsiab lus.
  • 4M lub sijhawm tshwj xeeb series, 600 lub sijhawm thib ob, cov ntaub ntawv nthuav tawm 3 hnub tag nrho, ~ 1.7B tag nrho cov ntaub ntawv cov ntsiab lus.
  • 40M tshwj xeeb lub sij hawm series, 1 teev ncua sij hawm, cov ntaub ntawv spans 3 tag nrho hnub, ~ 2.8B tag nrho cov ntaub ntawv cov ntsiab lus.

Cov neeg siv khoom thiab cov neeg rau zaub mov tau khiav ntawm cov xwm txheej tshwj xeeb n1-txoj-16 hauv Google huab. Cov xwm txheej no muaj cov kev teeb tsa hauv qab no:

  • vCPUs: 16
  • RAM: 60 GB
  • Cia: Standard 1TB HDD. Nws muab 120 Mbps nyeem / sau dhau los, 750 nyeem ua haujlwm ib ob thiab 1,5K sau ib ob.

TSDBs tau muab rho tawm los ntawm cov duab docker official thiab khiav hauv docker nrog cov kev teeb tsa hauv qab no:

  • VictoriaMetrics:

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

  • InfluxDB (-e) qhov tseem ceeb yuav tsum tau txhawb nqa lub zog siab. Saib cov ntsiab lus hauv cov ntaub ntawv):

    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 (configuration coj los ntawm nws file):

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

Cov ntaub ntawv loader tau khiav nrog 16 kab sib luag.

Kab lus no tsuas muaj cov txiaj ntsig rau qhov ntsuas qhov ntsuas. Cov txiaj ntsig ntawm kev xaiv cov qauv ntsuas yuav raug luam tawm hauv ib tsab xov xwm cais.

400K tshwj xeeb lub sijhawm series

Cia peb pib nrog cov ntsiab lus yooj yim - 400K. Cov txiaj ntsig Benchmark:

  • VictoriaMetrics: 2,6M cov ntsiab lus hauv ib ob; RAM siv: 3 GB; Qhov kawg cov ntaub ntawv loj ntawm disk: 965 MB
  • InfluxDB: 1.2M cov ntsiab lus hauv ib ob; RAM siv: 8.5 GB; Qhov kawg cov ntaub ntawv loj ntawm disk: 1.6 GB
  • Sijhawm: 849K cov ntsiab lus hauv ib ob; RAM siv: 2,5 GB; Qhov kawg cov ntaub ntawv loj ntawm disk: 50 GB

Raws li koj tuaj yeem pom los ntawm cov txiaj ntsig saum toj no, VictoriaMetrics yeej hauv qhov kev ua tau zoo thiab qhov sib piv. ncua sij hawm yeej hauv RAM kev siv, tab sis nws siv ntau qhov chaw disk - 29 bytes ib cov ntaub ntawv taw qhia.

Hauv qab no yog cov duab siv CPU rau txhua tus TSDBs thaum lub sijhawm ntsuas:

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: VictoriaMetrics - CPU load thaum lub sij hawm nkag mus rau qhov cim 400K metric.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: InfluxDB - CPU load thaum lub sij hawm nkag mus kuaj rau cov cim metric 400K.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: TimescaleDB - CPU load thaum lub sij hawm nkag mus rau qhov kev ntsuas tshwj xeeb ntawm 400K.

VictoriaMetrics siv tag nrho cov vCPUs, thaum InfluxDB underutilizes ~ 2 tawm ntawm 16 vCPUs.

Timescale tsuas yog siv 3-4 ntawm 16 vCPUs. High proportions ntawm iowait thiab system nyob rau hauv TimescaleDB timescale graph qhia ib tug bottleneck nyob rau hauv lub input / output (I / O) subsystem. Cia peb saib ntawm disk bandwidth siv graphs:

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: VictoriaMetrics - Disk Bandwidth Siv hauv Insertion Test rau Unique Metrics 400K.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: InfluxDB - Disk Bandwidth Siv ntawm Kev Ntsuas Ntsuas rau Cim Metrics 400K.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: TimescaleDB - Disk Bandwidth Siv ntawm Kev Ntsuas Ntsuas rau Cim Metrics 400K.

VictoriaMetrics sau cov ntaub ntawv ntawm 20 Mbps nrog qhov siab txog 45 Mbps. Peaks sib haum mus rau ib feem loj mergers nyob rau hauv tsob ntoo NGO.

InfluxDB sau cov ntaub ntawv ntawm 160 MB / s, thaum 1 TB tsav yuav tsum txwv sau throughput 120 MB/s.

TimescaleDB txwv tsis pub sau dhau ntawm 120 Mbps, tab sis qee zaum nws tawg qhov kev txwv no thiab ncav cuag 220 Mbps hauv qhov tseem ceeb. Cov peaks no sib raug rau cov kwj deg ntawm kev siv CPU tsis txaus hauv daim duab dhau los.

Cia peb saib cov tswv yim / tso zis (I / O) siv cov duab:

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: VictoriaMetrics - Ntxig kev sim I / O kev siv rau 400K cim ntsuas.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: InfluxDB - Ntxig kuaj I / O kev siv rau 400K cim ntsuas.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: TimescaleDB - Ntxig kuaj I / O kev siv rau 400K cov ntsuas tshwj xeeb.

Tam sim no nws yog qhov tseeb tias TimescaleDB tau ncav cuag nws qhov I / O txwv, yog li nws tsis tuaj yeem siv 12 vCPUs ntxiv.

4M cim lub sijhawm series

4M lub sij hawm series saib me ntsis nyuaj. Tab sis peb cov neeg sib tw dhau qhov kev xeem no tiav. Cov txiaj ntsig Benchmark:

  • VictoriaMetrics: 2,2M cov ntsiab lus hauv ib ob; RAM siv: 6 GB; Qhov kawg cov ntaub ntawv loj ntawm disk: 3 GB.
  • InfluxDB: 330K cov ntsiab lus ib ob; RAM siv: 20,5 GB; Cov ntaub ntawv kawg loj ntawm disk: 18,4 GB.
  • TimescaleDB: 480K cov ntsiab lus ib ob; RAM siv: 2,5 GB; Qhov kawg cov ntaub ntawv loj ntawm disk: 52 GB.

InfluxDB kev ua tau zoo poob los ntawm 1,2M cov ntaub ntawv cov ntsiab lus ib ob rau 400K lub sij hawm series mus rau 330K cov ntaub ntawv cov ntsiab lus ib ob rau 4M lub sij hawm series. Qhov no yog ib qho kev poob haujlwm tseem ceeb piv rau lwm tus neeg sib tw. Cia peb saib ntawm CPU siv graphs kom nkag siab lub hauv paus ua rau qhov poob:

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: VictoriaMetrics - CPU siv thaum lub sij hawm nkag mus rau qhov tshwj xeeb 4M lub sij hawm series.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: InfluxDB - CPU siv thaum lub sij hawm nkag mus rau qhov tshwj xeeb 4M lub sij hawm series.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: TimescaleDB - CPU siv thaum lub sij hawm nkag mus rau qhov tshwj xeeb 4M lub sij hawm series.

VictoriaMetrics siv yuav luag txhua chav ua haujlwm (CPU) lub zog. Qhov poob ntawm qhov kawg sib raug rau cov LSM txuas ntxiv tom qab tag nrho cov ntaub ntawv tau muab tso rau.

InfluxDB tsuas yog siv 8 ntawm 16 vCPUs, thaum TimscaleDB siv 4 ntawm 16 vCPUs. Lawv cov graphs muaj li cas? Siab koom iowait, uas dua qhia txog I/O bottleneck.

TimescaleDB muaj feem ntau system. Peb xav tias lub zog siab ua rau ntau lub kaw lus hu lossis ntau me nplooj faults.

Cia peb saib ntawm daim disk throughput graphs:

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: VictoriaMetrics - Siv disk bandwidth los ntxig 4M cim ntsuas.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: InfluxDB - Siv disk bandwidth los ntxig 4M cim ntsuas.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog lub screenshot: TimescaleDB - Siv disk bandwidth los ntxig 4M cim ntsuas.

VictoriaMetrics mus txog qhov txwv ntawm 120 MB / s ntawm lub ncov, thaum qhov nruab nrab sau nrawm yog 40 MB / s. Nws zoo li tias ob peb qhov hnyav LSM fusions tau ua thaum lub sijhawm siab tshaj.

InfluxDB rov nyem tawm qhov nruab nrab sau dhau los ntawm 200 MB / s nrog qhov siab txog li 340 MB / s ntawm lub disk nrog kev txwv sau ntawm 120 MB / s :)

TimescaleDB tsis yog disk txwv lawm. Nws zoo nkaus li txwv los ntawm lwm yam uas cuam tshuam nrog kev faib ua feem siab систСмной CPU load.

Cia peb saib ntawm IO siv cov duab:

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: VictoriaMetrics - Siv I / O thaum ntsuas qhov ntsuas rau qhov tshwj xeeb 4M lub sijhawm.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: InfluxDB - Siv I / O thaum ntsuas qhov ntsuas rau qhov tshwj xeeb 4M lub sijhawm.

High-performance TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Saum toj no yog ib qho screenshot: TimescaleDB - I / O kev siv thaum lub sij hawm nkag mus rau qhov tshwj xeeb 4M lub sij hawm series.

IO siv cov qauv tsom iav cov disk bandwidth - InfluxDB yog IO txwv, thaum VictoriaMetrics thiab TimescaleDB muaj cov khoom seem IO.

40M cim lub sijhawm series

40M lub sijhawm tshwj xeeb tau loj dhau rau InfluxDB :)

Cov txiaj ntsig Benchmark:

  • VictoriaMetrics: 1,7M cov ntsiab lus hauv ib ob; RAM siv: 29 GB; Disk qhov chaw siv: 17 GB.
  • InfluxDB: Tsis tiav vim nws xav tau ntau dua 60GB ntawm RAM.
  • TimescaleDB: 330K cov ntsiab lus ib ob, RAM siv: 2,5 GB; Disk qhov chaw siv: 84GB.

TimescaleDB qhia tshwj xeeb tsawg thiab ruaj khov RAM siv ntawm 2,5 GB - tib yam li rau qhov tshwj xeeb 4M thiab 400K metrics.

VictoriaMetrics maj mam nce ntawm tus nqi ntawm 100k cov ntaub ntawv cov ntsiab lus ib ob kom txog rau thaum tag nrho 40M tagged metric npe tau ua tiav. Tom qab ntawd nws ua tiav qhov kev nkag mus tau ruaj khov ntawm 1,5-2,0M cov ntaub ntawv cov ntsiab lus ib ob, yog li qhov kawg tshwm sim yog 1,7M cov ntaub ntawv cov ntsiab lus ib ob.

Cov duab kos rau 40M lub sijhawm tshwj xeeb zoo ib yam li cov duab kos rau 4M lub sijhawm tshwj xeeb, yog li cia peb hla lawv.

tshawb pom

  • TSDBs niaj hnub no muaj peev xwm ua cov ntawv ntxig rau ntau lab lub sijhawm tshwj xeeb ntawm ib tus neeg rau zaub mov. Hauv tsab xov xwm tom ntej, peb yuav sim seb TSDBs ua tau zoo npaum li cas xaiv hla ntau lab lub sijhawm tshwj xeeb.
  • Kev siv CPU tsis txaus feem ntau qhia txog I / O lub fwj. Nws kuj tseem tuaj yeem qhia tau tias qhov thaiv qhov thaiv yog qhov ntxhib dhau, tsuas yog ob peb lub xov tuaj yeem khiav ntawm ib lub sijhawm.
  • I/O bottleneck muaj nyob, tshwj xeeb tshaj yog nyob rau hauv uas tsis yog-SSD cia xws li huab muab kev pab cuam virtualized thaiv cov cuab yeej.
  • VictoriaMetrics muab qhov zoo tshaj plaws optimization rau qeeb, qis I / O cia. Nws muab qhov zoo tshaj plaws ceev thiab qhov zoo tshaj plaws compression piv.

Rub VictoriaMetrics ib leeg-server duab thiab sim nws ntawm koj cov ntaub ntawv. Qhov sib raug zoo li qub binary muaj nyob ntawm GitHub.

Nyeem ntxiv txog VictoriaMetrics hauv qhov no Tshooj.

Hloov tshiab: luam tawm tsab xov xwm sib piv cov kev ua tau zoo ntawm VictoriaMetrics nrog InfluxDB nrog cov txiaj ntsig rov tsim dua.

Hloov tshiab #2: Nyeem kuj tsab xov xwm ntawm ntsug scalability VictoriaMetrics vs InfluxDB vs TimescaleDB.

Hloov tshiab #3: VictoriaMetrics tam sim no qhib qhov chaw!

Telegram tham: https://t.me/VictoriaMetrics_ru1

Tau qhov twg los: www.hab.com

Ntxiv ib saib