Benchmark ya TSDB yogwira ntchito kwambiri VictoriaMetrics vs TimescaleDB vs InfluxDB
VictoriaMetrics, TimescaleDB ndi InfluxDB adafanizidwa mu nkhani yapita pa dataset yokhala ndi mabiliyoni a data amtundu wa 40K wapadera.
Zaka zingapo zapitazo panali nthawi ya Zabbix. Seva iliyonse yachitsulo yopanda kanthu inalibe zizindikiro zochulukirapo - kugwiritsa ntchito CPU, kugwiritsa ntchito RAM, kugwiritsa ntchito disk ndi kugwiritsa ntchito maukonde. Mwanjira iyi, ma metrics ochokera kuma seva masauzande amatha kulowa munthawi yapadera ya 40, ndipo Zabbix imatha kugwiritsa ntchito MySQL ngati kumbuyo kwa data yanthawi :)
Panopa yekha node_exporter ndi masinthidwe osasinthika amapereka ma metrics opitilira 500 pagulu lapakati. Pali zambiri ogulitsa kunja kwa ma database osiyanasiyana, maseva apaintaneti, makina a hardware, ndi zina zotere. Onse amapereka ma metric othandiza osiyanasiyana. Zonse ntchito zambiri ayambe kudziikira okha zizindikiro zosiyanasiyana. Pali Kubernetes yokhala ndi magulu ndi ma pod omwe amawulula ma metric ambiri. Izi zimapangitsa kuti maseva aziwonetsa masauzande masauzande a ma metrics apadera pa wolandira. Chifukwa chake mndandanda wanthawi wa 40K wapadera sulinso mphamvu yayikulu. Ikukhala yodziwika bwino ndipo iyenera kusamaliridwa mosavuta ndi TSDB yamakono pa seva imodzi.
Mtengo wa TSBS ndi chida chabwino kwambiri chowonetsera ma TSDB. Zimakupatsani mwayi wopanga ma metrics opitilira muyeso podutsa nthawi yofunikira yogawidwa ndi 10 - mbendera. -mlingo (kale -scale-var). 10 ndi chiwerengero cha miyeso (metrics) yopangidwa pa wolandira aliyense kapena seva. Ma dataset otsatirawa adapangidwa pogwiritsa ntchito TSBS pa benchmark:
400K nthawi yapadera, 60 yachiwiri yapakati pakati pa ma data, deta imatenga masiku atatu athunthu, ~ 3B chiwerengero chonse cha mfundo za data.
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
Chojambulira deta chinayendetsedwa ndi ulusi 16 wofanana.
Nkhaniyi ili ndi zotsatira za ma benchmarks okha. Zotsatira za benchmark yosankhidwa zidzasindikizidwa m'nkhani ina.
400K nthawi yapaderadera
Tiyeni tiyambe ndi zinthu zosavuta - 400K. Zotsatira za benchmark:
VictoriaMetrics: 2,6M mfundo za data pamphindi; Kugwiritsa ntchito RAM: 3 GB; Kukula komaliza kwa data pa disk: 965 MB
InfluxDB: 1.2M mfundo za data pamphindi; Kugwiritsa ntchito RAM: 8.5 GB; kukula komaliza kwa data pa disk: 1.6 GB
Nthawi: 849K data point pamphindikati; Kugwiritsa ntchito RAM: 2,5 GB; Kukula komaliza kwa data pa disk: 50 GB
Monga mukuwonera pazotsatira zomwe zili pamwambapa, VictoriaMetrics imapambana pakuyika magwiridwe antchito ndi kuchuluka kwa compression. Nthawi imapambana mukugwiritsa ntchito RAM, koma imagwiritsa ntchito malo ambiri a disk - 29 bytes pa data point.
Pansipa pali ma graph ogwiritsira ntchito CPU pa TSDB iliyonse panthawi ya benchmark:
Pamwambapa pali chithunzi chojambula: VictoriaMetrics - CPU katundu panthawi yoyesa kuyesa kwapadera kwa 400K metric.
Pamwambapa pali chithunzi: InfluxDB - CPU katundu panthawi yoyeserera yapadera ya metric 400K.
Pamwambapa pali chithunzithunzi: TimescaleDB - CPU katundu panthawi yoyesa kuyesa kwapadera kwa 400K.
VictoriaMetrics imagwiritsa ntchito ma vCPU onse omwe alipo, pomwe InfluxDB imagwiritsa ntchito ~ 2 mwa 16 vCPU.
Timecale imangogwiritsa ntchito 3-4 mwa 16 vCPUs. Kuchuluka kwa iowait ndi kachitidwe mu TimescaleDB timescale graph ikuwonetsa kutsekeka mu kachitidwe kakang'ono ka input/output (I/O). Tiyeni tiwone ma graph ogwiritsira ntchito disk bandwidth:
Pamwambapa pali chithunzi: VictoriaMetrics - Disk Bandwidth Usage mu Insertion Test for Unique Metrics 400K.
Pamwambapa pali chithunzi: InfluxDB - Disk Bandwidth Usage pa Insertion Test for Unique Metrics 400K.
Pamwambapa pali chithunzi: TimescaleDB - Disk Bandwidth Usage pa Insertion Test for Unique Metrics 400K.
VictoriaMetrics imalemba zambiri pa 20 Mbps ndi nsonga mpaka 45 Mbps. Nsonga zimagwirizana ndi kuphatikizika kwakukulu mumtengo NGO.
TimescaleDB ili ndi malire kuti alembe kutulutsa kwa 120 Mbps, koma nthawi zina imaphwanya malire ndikufikira 220 Mbps pamitengo yapamwamba. Nsonga izi zimagwirizana ndi zigwa zosakwanira kugwiritsa ntchito CPU mu graph yapitayi.
Tiyeni tiwone ma graph ogwiritsira ntchito / zotuluka (I/O):
Pamwambapa pali chithunzithunzi: VictoriaMetrics - Lowetsani kugwiritsa ntchito I/O kuyesa kwa 400K ma metric apadera.
Pamwambapa pali chithunzi: InfluxDB - Ikani kuyesa kwa I/O kugwiritsa ntchito ma metric apadera a 400K.
Pamwambapa pali chithunzi: TimescaleDB - Ikani kuyesa kwa I/O kugwiritsa ntchito ma metric apadera a 400K.
Tsopano zikuwonekeratu kuti TimescaleDB ikufikira malire ake a I/O, kotero siingagwiritse ntchito ma 12 vCPU otsalawo.
4M nthawi yapaderadera
Mndandanda wa nthawi ya 4M umawoneka wovuta pang'ono. Koma mpikisano wathu wapambana mayesowa. Zotsatira za benchmark:
VictoriaMetrics: 2,2M mfundo za data pamphindi; Kugwiritsa ntchito RAM: 6 GB; Kukula komaliza kwa data pa disk: 3 GB.
InfluxDB: 330K data point pamphindi; Kugwiritsa ntchito RAM: 20,5 GB; Kukula komaliza kwa data pa disk: 18,4 GB.
TimescaleDB: 480K data point pamphindikati; Kugwiritsa ntchito RAM: 2,5 GB; Kukula komaliza kwa data pa disk: 52 GB.
Kuchita kwa InfluxDB kwatsika kuchoka pa ma data 1,2M pa sekondi imodzi kwa nthawi ya 400K kufika pa 330K data points pa sekondi imodzi kwa 4M time series. Uku ndikuwonongeka kwakukulu kwa magwiridwe antchito poyerekeza ndi ena omwe akupikisana nawo. Tiyeni tiwone ma graph ogwiritsira ntchito CPU kuti timvetsetse chomwe chimayambitsa kutayika uku:
Pamwambapa pali chithunzithunzi: VictoriaMetrics - Kugwiritsa ntchito CPU pakuyesa kuyika kwanthawi yapadera ya 4M.
Pamwambapa pali chithunzi: InfluxDB - Kugwiritsa ntchito CPU pakuyesa kuyika kwanthawi yapadera ya 4M.
Pamwambapa pali chithunzi: TimescaleDB - Kugwiritsa ntchito CPU pakuyesa kuyika kwanthawi yapadera ya 4M.
VictoriaMetrics imagwiritsa ntchito pafupifupi mphamvu zonse za processing unit (CPU). Kutsika kumapeto kumafanana ndi kusakanikirana kwa LSM kotsalira pambuyo poti deta yonse yayikidwa.
InfluxDB imagwiritsa ntchito 8 yokha ya 16 vCPU, pomwe TimsecaleDB imagwiritsa ntchito 4 ya 16 vCPU. Kodi ma graph awo amafanana chiyani? Kugawana kwakukulu iowait, zomwe zikuwonetsanso kutsekeka kwa I/O.
TimescaleDB ili ndi gawo lalikulu system. Tikuganiza kuti mphamvu yayikulu idayambitsa mafoni ambiri kapena ambiri zolakwika zazing'ono zamasamba.
Tiyeni tiwone ma graph a disk throughput:
Pamwambapa pali chithunzi: VictoriaMetrics - Kugwiritsa ntchito disk bandwidth kuyika ma metric apadera a 4M.
Pamwambapa pali chithunzi: InfluxDB - Kugwiritsa ntchito disk bandwidth kuyika ma metric apadera a 4M.
Pamwambapa pali chithunzi: TimescaleDB - Kugwiritsa ntchito disk bandwidth kuyika ma metric apadera a 4M.
VictoriaMetrics idafikira malire a 120 MB/s pachimake, pomwe liwiro lapakati linali 40 MB/s. Zikuoneka kuti ma fusions angapo olemera a LSM adachitika pachimake.
InfluxDB imafinyanso kutulutsa kwapakati kwa 200 MB/s ndi nsonga zofikira 340 MB/s pa disk yokhala ndi malire a 120 MB/s :)
TimescaleDB siilinso disk limited. Zikuwoneka kuti zimachepetsedwa ndi chinthu china chokhudzana ndi kuchuluka kwakukulu ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ CPU katundu.
Magwiridwe a IO amafanana ndi disk bandwidth - InfluxDB ndi IO yochepa, pomwe VictoriaMetrics ndi TimescaleDB ali ndi zida za IO.
40M nthawi yapaderadera
Nthawi yapadera ya 40M inali yayikulu kwambiri kwa InfluxDB :)
Zotsatira za benchmark:
VictoriaMetrics: 1,7M mfundo za data pamphindi; Kugwiritsa ntchito RAM: 29 GB; Kugwiritsa ntchito malo a disk: 17 GB.
InfluxDB: Sizinathe chifukwa zimafunika kuposa 60GB ya RAM.
TimescaleDB: 330K data point pamphindi, kugwiritsa ntchito RAM: 2,5 GB; Kugwiritsa ntchito malo a disk: 84GB.
TimescaleDB ikuwonetsa kugwiritsidwa ntchito kotsika komanso kokhazikika kwa RAM pa 2,5 GB - chimodzimodzi ndi ma metric apadera a 4M ndi 400K.
VictoriaMetrics idakwera pang'onopang'ono pamlingo wa ma data 100k pa sekondi iliyonse mpaka mayina onse oyika 40M atasinthidwa. Kenaka adapeza chiwerengero chokhazikika cha 1,5-2,0M data point pamphindi, kotero zotsatira zomaliza zinali mfundo za 1,7M pamphindi.
Ma graph a nthawi yapadera ya 40M ndi ofanana ndi ma graph a nthawi yapadera ya 4M, kotero tiyeni tidumphe.
anapezazo
Ma TSDB amakono amatha kukonza zoyikapo mamiliyoni anthawi yapadera pa seva imodzi. M'nkhani yotsatira, tiyesa momwe ma TSDB amachitira bwino masankho pamipikisano yanthawi yapadera.
Kusakwanira kwa CPU kugwiritsa ntchito nthawi zambiri kumawonetsa kutsekeka kwa I/O. Zingasonyezenso kuti kutsekerezako ndi kowawa kwambiri, ndi ulusi wochepa chabe womwe umatha kuthamanga panthawi imodzi.
Botolo la I/O liripo, makamaka m'malo osungira omwe si a SSD monga zida za block network za operekera mitambo.
VictoriaMetrics imapereka kukhathamiritsa kwapang'onopang'ono, kotsika kwa I/O. Imapereka liwiro labwino kwambiri komanso chiΕ΅erengero chabwino kwambiri cha kuponderezana.