Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

VictoriaMetrics, TimescaleDB ΠΈ InfluxDB Π±Ρ‹Π»ΠΈ сравнСны Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎ Π½Π°Π±ΠΎΡ€Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠΌ Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… 40K ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ рядам.

НСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π±Ρ‹Π»Π° эпоха Zabbix. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ bare metal сСрвСр ΠΈΠΌΠ΅Π» Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ – использованиС процСссора, использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, использованиС диска ΠΈ использованиС сСти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ с тысяч сСрвСров ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² 40 тысяч ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов, Π° Zabbix ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MySQL Π² качСствС бэкСнда для Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов πŸ™‚

Π’ настоящСС врСмя ΠΎΠ΄ΠΈΠ½ node_exporter с конфигурациями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прСдоставляСт Π±ΠΎΠ»Π΅Π΅ 500 ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π½Π° срСднСм хостС. БущСствуСт мноТСство экспортСров для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π΅Π±-сСрвСров, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… систСм ΠΈ Ρ‚. Π΄. ВсС ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ВсС большС ΠΈ большС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° сСбя. БущСствуСт Kubernetes с кластСрами ΠΈ pod-Π°ΠΌΠΈ, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ мноТСство ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ сСрвСры Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ тысячи ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π½Π° хост. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ряд 40K большС Π½Π΅ являСтся высокой ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ. Он становится мСйнстримом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ любой соврСмСнной TSDB Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ большоС количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚? НавСрноС, 400К ΠΈΠ»ΠΈ 4М? Или 40ΠΌ? Π”Π°Π²Π°ΠΉΡ‚Π΅ сравним соврСмСнныС TSDBs с этими Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ.

Установка Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°

TSBS – это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π° для TSDBs. Он позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, пСрСдавая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° 10 β€” Ρ„Π»Π°Π³ -scale (Π±Ρ‹Π²ΡˆΠΈΠΉ -scale-var). 10 – это количСство ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ (ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ), Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ хостС, сСрвСрС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»ΠΈ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TSBS для Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°:

  • 400K ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ряд, 60 сСкунд ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ 3 дня, ~1.7B ΠΎΠ±Ρ‰Π΅Π΅ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ….
  • 4M ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ряд, ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» 600 сСкунд, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ 3 дня, ~1.7B ΠΎΠ±Ρ‰Π΅Π΅ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ….
  • 40M ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ряд, ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» 1 час, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ 3 дня, ~2.8 B ΠΎΠ±Ρ‰Π΅Π΅ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… экзСмплярах n1-standard-16 Π² ΠΎΠ±Π»Π°ΠΊΠ΅ Google. Π­Ρ‚ΠΈ экзСмпляры ΠΈΠΌΠ΅Π»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

  • vCPUs: 16
  • ΠžΠ—Π£: 60 Π“Π‘
  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅: стандартный ТСсткий диск Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ 1 Π’Π‘. Он обСспСчиваСт ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ чтСния/записи 120 ΠœΠ±ΠΈΡ‚/с, 750 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния Π² сСкунду ΠΈ 1,5К ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи Π² сСкунду.

TSDBs Π±Ρ‹Π»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² docker ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² docker со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ конфигурациями:

  • VictoriaMetrics:

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

  • ЗначСния InfluxDB (- e Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ высокой мощности. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ смотритС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ):

    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 (конфигурация Π±Ρ‹Π»Π° принята ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π°):

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

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ с 16 ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ вставки. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ° Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

400К ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с простых элСмСнтов β€” 400К. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°:

  • VictoriaMetrics: 2,6М Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 3 Π“Π‘; ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС: 965 ΠœΠ‘
  • InfluxDB: 1.2M Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 8.5 GB; ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС: 1.6 GB
  • Timescale: 849K Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 2,5 Π“Π‘; ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС: 50 Π“Π‘

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², VictoriaMetrics Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ вставки ΠΈ стСпСни сТатия. ВрСмСнная шкала Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π½ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ дискового пространства β€” 29 Π±Π°ΠΉΡ‚ Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ….

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования процСссора (CPU) для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· TSDBs Π²ΠΎ врСмя Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°:

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: VictoriaMetrics β€” Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° CPU ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ 400K.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: InfluxDB β€” Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° CPU ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ 400K.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: TimescaleDB β€” Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° CPU ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ 400K.

VictoriaMetrics ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ всС доступныС vCPUs, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ InfluxDB нСдостаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ~2 ΠΈΠ· 16 vCPUs.

Timescale ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 3-4 ΠΈΠ· 16 vCPUs. ВысокиС Π΄ΠΎΠ»ΠΈ iowait ΠΈ system Π½Π° TimescaleDB Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ² ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΡƒΠ·ΠΊΠΎΠ΅ мСсто Π² подсистСмС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (I/O). Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования пропускной способности диска:

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: VictoriaMetrics β€” ИспользованиС пропускной способности диска ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ 400K.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: InfluxDB β€” ИспользованиС пропускной способности диска ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ 400K.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: TimescaleDB β€” ИспользованиС пропускной способности диска ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ 400K.

VictoriaMetrics записываСт Π΄Π°Π½Π½Ρ‹Π΅ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 20 ΠœΠ±ΠΈΡ‚/с с ΠΏΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎ 45 ΠœΠ±ΠΈΡ‚/с. Пики ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ большим частичным слияниям Π² Π΄Π΅Ρ€Π΅Π²Π΅ LSM.

InfluxDB записываСт Π΄Π°Π½Π½Ρ‹Π΅ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 160 ΠœΠ‘/с, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ 1 Π’Π‘ диск Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ записи 120 ΠœΠ‘/с.

TimescaleDB ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ записи 120 ΠœΠ±ΠΈΡ‚/с, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ этот ΠΏΡ€Π΅Π΄Π΅Π» ΠΈ достигаСт 220 ΠœΠ±ΠΈΡ‚/с Π² ΠΏΠΈΠΊΠΎΠ²Ρ‹Ρ… значСниях. Π­Ρ‚ΠΈ ΠΏΠΈΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π°Π»Π°ΠΌ нСдостаточной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ процСссора Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (I/O):

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: VictoriaMetrics β€” ИспользованиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΈ тСстС вставки для 400K ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: InfluxDB β€” ИспользованиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΈ тСстС вставки для 400K ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: TimescaleDB β€” ИспользованиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΈ тСстС вставки для 400K ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ясно, Ρ‡Ρ‚ΠΎ TimescaleDB достигаСт ΠΏΡ€Π΅Π΄Π΅Π»Π° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, поэтому ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ 12 vCPUs.

4M ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ряды

4M Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ряды выглядят Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅. Но наши ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡΠ΄Π°ΡŽΡ‚ этот экзамСн. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°:

  • VictoriaMetrics: 2,2М Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 6 Π“Π‘; ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС: 3 Π“Π‘.
  • InfluxDB: 330К Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 20,5 Π“Π‘; ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС: 18,4 Π“Π‘.
  • TimescaleDB: 480K Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 2,5 Π“Π‘; ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС: 52 Π“Π‘.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ InfluxDB ΡƒΠΏΠ°Π»Π° с 1,2 ΠΌΠ»Π½ Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду для 400К Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда Π΄ΠΎ 330 тыс. Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду для 4M Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ потСря ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования процСссора, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ этой ΠΏΠΎΡ‚Π΅Ρ€ΠΈ:

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: VictoriaMetrics β€” ИспользованиС CPU ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда 4M.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: InfluxDB β€” ИспользованиС CPU ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда 4M.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: TimescaleDB β€” ИспользованиС CPU ΠΏΡ€ΠΈ тСстС вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда 4M.

VictoriaMetrics ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всю ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ процСссора (CPU). Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ соотвСтствуСт ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΡΡ LSM слияниям послС вставки всСх Π΄Π°Π½Π½Ρ‹Ρ….

InfluxDB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 8 ΠΈΠ· 16 vCPUs, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ TimsecaleDB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 4 ΠΈΠ· 16 vCPUs. Π§Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρƒ ΠΈΡ… Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²? Высокая доля iowait, Ρ‡Ρ‚ΠΎ, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡƒΠ·ΠΊΠΎΠ΅ мСсто Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

TimescaleDB ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ долю system. ПолагаСм, Ρ‡Ρ‚ΠΎ высокая ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ ΠΈΠ»ΠΈ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ minor page faults.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ пропускной способности диска:

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: VictoriaMetrics β€” ИспользованиС полосы пропускания диска для вставки 4M ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: InfluxDB β€” ИспользованиС полосы пропускания диска для вставки 4M ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: TimescaleDB β€” ИспользованиС полосы пропускания диска для вставки 4M ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

VictoriaMetrics достигали ΠΏΡ€Π΅Π΄Π΅Π»Π° 120 ΠœΠ‘/с Π² ΠΏΠΈΠΊ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ срСдняя ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ записи составляла 40 ΠœΠ‘/с. ВСроятно, Π²ΠΎ врСмя ΠΏΠΈΠΊΠ° Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ нСсколько тяТСлых слияний LSM.

InfluxDB снова Π²Ρ‹ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΡΡ€Π΅Π΄Π½ΡŽΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ записи 200 ΠœΠ‘/с с ΠΏΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎ 340 ΠœΠ‘/с Π½Π° дискС с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ записи 120 ΠœΠ‘/с πŸ™‚

TimescaleDB большС Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° диском. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π΅Ρ‰Π΅, связанным с высокой Π΄ΠΎΠ»Π΅ΠΉ систСмной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ CPU.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования IO:

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: VictoriaMetrics β€” ИспользованиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π²ΠΎ врСмя тСста вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда 4M.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: InfluxDB β€” ИспользованиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π²ΠΎ врСмя тСста вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда 4M.

Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ TSDB benchmark VictoriaMetrics vs TimescaleDB vs InfluxDB

Π’Ρ‹ΡˆΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚: TimescaleDB β€” ИспользованиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π²ΠΎ врСмя тСста вставки для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда 4M.

Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ использования IO ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования полосы пропускания диска β€” InfluxDB ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ IO, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ VictoriaMetrics ΠΈ TimescaleDB ΠΈΠΌΠ΅ΡŽΡ‚ запасныС рСсурсы Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° IO.

40М ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°ΠΉΠΌ сСрии

40М ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ряды Π±Ρ‹Π»ΠΈ слишком большими для InfluxDB πŸ™

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Π΅Ρ‡ΠΌΠ°Ρ€ΠΊΠ°:

  • VictoriaMetrics: 1,7М Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду; использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 29 Π“Π‘; использованиС дискового пространства: 17 Π“Π‘.
  • InfluxDB: Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для этого Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±ΠΎΠ»Π΅Π΅ 60 Π“Π‘ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.
  • TimescaleDB: 330К Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду, использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: 2,5 Π“Π‘; использованиС дискового пространства: 84GB.

TimescaleDB ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ΅ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти – 2,5 Π“Π‘ β€” ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅, сколько ΠΈ для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ 4M ΠΈ 400K.

VictoriaMetrics ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈΡΡŒ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 100 тысяч Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду, ΠΏΠΎΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ всС 40М мСтричСских ΠΈΠΌΠ΅Π½ с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ достиг устойчивой скорости вставки 1,5-2,0М Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ составил 1,7М Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкунду.

Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ для 40М ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌ для 4М ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… пропустим.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

  • Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ TSDBs способны ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ вставки для ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ TSDBs выполняСт Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов.
  • НСдостаточная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡƒΠ·ΠΊΠΎΠ΅ мСсто Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° слишком Π³Ρ€ΡƒΠ±ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  • Π£Π·ΠΊΠΎΠ΅ мСсто Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сущСствуСт, особСнно Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… Π±Π΅Π· SSD, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ устройства ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ².
  • VictoriaMetrics обСспСчиваСт Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ для ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ с Π½ΠΈΠ·ΠΊΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Он обСспСчиваСт Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ односСрвСрный ΠΎΠ±Ρ€Π°Π· VictoriaMetrics ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° своих Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ статичСский Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» доступСн Π½Π° GitHub.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ VictoriaMetrics Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ОбновлСниС: ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡ, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вставки VictoriaMetrics с InfluxDB с воспроизводимыми Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ.

ОбновлСниС#2: Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ VictoriaMetrics vs InfluxDB vs TimescaleDB.

ОбновлСниС #3: VictoriaMetrics Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ!

Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ Ρ‡Π°Ρ‚: https://t.me/VictoriaMetrics_ru1

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com