Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

VictoriaMetrics, TimescaleDB ва InfluxDB дар муқоиса карда шуданд мақолаи қаблӣ дар маҷмӯи додаҳо бо як миллиард нуқтаи додаҳо, ки ба силсилаи беназири 40К вақт тааллуқ доранд.

Чанд сол пеш даврони Заббикс буд. Ҳар як сервери металлии луч на бештар аз чанд нишондиҳанда дошт - истифодаи CPU, истифодаи RAM, истифодаи диск ва истифодаи шабака. Бо ин роҳ, ченакҳо аз ҳазорҳо серверҳо метавонанд ба 40 ҳазор силсилаи беназири вақт мувофиқат кунанд ва Zabbix метавонад MySQL-ро ҳамчун пуштибонии маълумоти силсилаи вақт истифода барад :)

Айни замон танҳо node_exporter бо конфигуратсияҳои пешфарз зиёда аз 500 метрикаро дар мизбони миёна таъмин мекунад. Ин ҷо зиёд аст содиркунандагон барои пойгоҳи додаҳои гуногун, веб-серверҳо, системаҳои сахтафзор ва ғайра. Ҳамаи онҳо як қатор ченакҳои муфидро таъмин мекунанд. Ҳама бештар ва бештар барномаҳо барои худ нишондихандахои гуногунро мукаррар карданй мешаванд. Кубернетҳо бо кластерҳо ва подкҳо мавҷуданд, ки бисёр ченакҳоро фош мекунанд. Ин боиси он мегардад, ки серверҳо ҳазорҳо нишондиҳандаҳои беназирро барои як мизбон фош мекунанд. Ҳамин тавр, силсилаи беназири 40K дигар қудрати баланд нест. Он ба маҷрои асосӣ табдил меёбад ва бояд аз ҷониби ҳама гуна TSDB муосир дар як сервер ба осонӣ идора карда шавад.

Шумораи зиёди силсилаи вақтҳои беназир дар айни замон чӣ гуна аст? Эҳтимол 400K ё 4M? Ё 40м? Биёед TSDB-ҳои муосирро бо ин рақамҳо муқоиса кунем.

Насб кардани нишондиҳанда

TSBS воситаи беҳтарини муқоисавӣ барои TSDB мебошад. Он ба шумо имкон медиҳад, ки миқдори ихтиёрии метрикаро тавассути гузариши шумораи зарурии силсилаи вақт, ки ба 10 тақсим карда шудааст - парчам тавлид кунед -миқёс (собиқ -scale-var). 10 шумораи андозагирӣ (метрика) дар ҳар як мизбон ё сервер тавлидшуда аст. Маҷмӯи додаҳои зерин бо истифода аз TSBS барои муқоиса тавлид карда шуданд:

  • 400K силсилаи беназири вақт, фосилаи 60 сония байни нуқтаҳои додаҳо, маълумот 3 рӯзи пурраро дар бар мегирад, ~ 1.7B шумораи умумии нуқтаҳои додаҳо.
  • Силсилаи беназири вақтҳои 4M, фосилаи 600 сония, маълумот 3 рӯзи пурраро дар бар мегирад, ~ 1.7B шумораи умумии нуқтаҳои додаҳо.
  • 40M силсилаи беназири вақт, фосилаи 1 соат, маълумот 3 рӯзи пурраро дар бар мегирад, ~ 2.8B шумораи умумии нуқтаҳои додаҳо.

Мизоҷ ва сервер дар мисолҳои махсус кор мекарданд n1-стандарт-16 дар абри Google. Ин мисолҳо конфигуратсияҳои зерин доштанд:

  • vCPUs: 16
  • RAM: 60 GB
  • Нигоҳдорӣ: HDD стандартии 1TB. Он қобилияти хондан/навиштанро 120 Мбит/сония, 750 амалиёти хониш дар як сония ва 1,5К навиштан дар як сонияро таъмин мекунад.

TSDB-ҳо аз тасвирҳои расмии докер гирифта шудаанд ва дар докер бо конфигуратсияҳои зерин кор мекунанд:

  • 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 риштаи параллелӣ иҷро карда шуд.

Ин мақола танҳо натиҷаҳоро барои нишондиҳандаҳои воридкунӣ дар бар мегирад. Натиҷаҳои санҷиши интихобӣ дар мақолаи алоҳида нашр карда мешаванд.

400K силсилаи вақтҳои беназир

Биёед бо унсурҳои оддӣ оғоз кунем - 400K. Натиҷаҳои муқоисавӣ:

  • VictoriaMetrics: 2,6M нуқтаҳои маълумот дар як сония; Истифодаи RAM: 3 ГБ; Андозаи ниҳоии маълумот дар диск: 965 MB
  • InfluxDB: 1.2M нуқтаҳои маълумот дар як сония; Истифодаи RAM: 8.5 ГБ; Андозаи ниҳоии маълумот дар диск: 1.6 ГБ
  • Ҷадвали вақт: 849K нуқтаҳои маълумот дар як сония; Истифодаи RAM: 2,5 ГБ; Андозаи ниҳоии маълумот дар диск: 50 ГБ

Тавре ки шумо аз натиҷаҳои боло мебинед, VictoriaMetrics дар иҷрои воридкунӣ ва таносуби фишурда ғолиб меояд. Хронометрӣ дар истифодаи RAM ғолиб меояд, аммо он фазои зиёди дискро истифода мебарад - 29 байт барои як нуқтаи дода.

Дар зер графикҳои истифодаи CPU барои ҳар як TSDB дар давоми санҷиш оварда шудаанд:

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: VictoriaMetrics - сарбории CPU ҳангоми санҷиши воридкунӣ барои метрикаи беназири 400K.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло як скриншот аст: InfluxDB - сарбории CPU ҳангоми санҷиши воридкунӣ барои 400К метрикаи беназир.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло як скриншот аст: TimescaleDB - сарбории CPU ҳангоми санҷиши воридкунӣ барои ченаки беназири 400K.

VictoriaMetrics ҳамаи vCPU-ҳои дастрасро истифода мебарад, дар ҳоле ки InfluxDB аз 2 vCPU-и ~ 16-ро кам истифода мебарад.

Ҷадвали вақт аз 3 vCPU танҳо 4-16-тоашро истифода мебарад. Таносуби баланди iowait ва система дар ҷадвали ҷадвали TimescaleDB монеа дар зерсистемаи вуруд/баромад (I/O)-ро нишон медиҳад. Биёед ба графикҳои истифодаи фарохмаҷрои диск назар андозем:

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот мавҷуд аст: VictoriaMetrics - Истифодаи фарохмаҷрои диск дар санҷиши воридшавӣ барои ченакҳои беназири 400K.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: InfluxDB - Истифодаи фарохмаҷрои диск дар санҷиши воридшавӣ барои ченакҳои беназири 400K.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: TimescaleDB - Истифодаи фарохмаҷрои диск дар санҷиши воридшавӣ барои ченакҳои беназири 400K.

VictoriaMetrics маълумотро бо суръати 20 Мбит бо қуллаҳои то 45 Мбит / сония сабт мекунад. Қуллаҳо ба якҷояшавии қисман калон дар дарахт мувофиқанд ТҒД.

InfluxDB маълумотро бо суръати 160 МБ/с менависад, дар ҳоле ки диски 1 ТБ бояд маҳдуд бошад қобилияти навиштан 120 МБ/с.

TimescaleDB бо интиқоли сабти 120 Мбит / сония маҳдуд аст, аммо баъзан он ин маҳдудиятро вайрон мекунад ва дар қимматҳои баланд ба 220 Мбит / сония мерасад. Ин қуллаҳо ба водиҳои истифодаи нокифояи CPU дар графики қаблӣ мувофиқат мекунанд.

Биёед ба графикҳои истифодабарии воридот/баромад (I/O) назар андозем:

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: VictoriaMetrics - Гузаронидани истифодаи санҷиши I/O барои ченакҳои беназири 400K.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот мавҷуд аст: InfluxDB - Истифодаи санҷиши I/O барои ченакҳои беназири 400K ворид кунед.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот мавҷуд аст: TimescaleDB - Истифодаи санҷиши воридот ва баромадро барои ченакҳои беназири 400K ворид кунед.

Ҳоло маълум аст, ки TimescaleDB ба маҳдудияти I/O-и худ расида истодааст, аз ин рӯ 12 vCPU-и боқимондаро истифода бурда наметавонад.

Силсилаи беназири 4M

Силсилаи вақти 4M каме душвор ба назар мерасад. Аммо рақибони мо аз ин имтиҳон бомуваффақият мегузаранд. Натиҷаҳои муқоисавӣ:

  • VictoriaMetrics: 2,2M нуқтаҳои маълумот дар як сония; Истифодаи RAM: 6 ГБ; Андозаи ниҳоии маълумот дар диск: 3 ГБ.
  • InfluxDB: 330K нуқтаҳои маълумот дар як сония; Истифодаи RAM: 20,5 ГБ; Андозаи ниҳоии маълумот дар диск: 18,4 ГБ.
  • TimescaleDB: 480K нуқтаҳои маълумот дар як сония; Истифодаи RAM: 2,5 ГБ; Андозаи ниҳоии маълумот дар диск: 52 ГБ.

Иҷрои InfluxDB аз 1,2M нуқтаи додаҳо дар як сония барои силсилаи вақтҳои 400K то 330K нуқтаи додаҳо дар як сония барои силсилаи 4М коҳиш ёфт. Ин дар муқоиса бо дигар рақибон як талафоти назаррас аст. Биёед ба графикҳои истифодаи CPU назар андозем, то сабаби аслии ин талафотро фаҳмем:

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: VictoriaMetrics - Истифодаи CPU ҳангоми санҷиши воридкунӣ барои силсилаи беназири 4M.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло як скриншот аст: InfluxDB - Истифодаи CPU ҳангоми санҷиши воридкунӣ барои силсилаи вақти беназири 4M.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: TimescaleDB - Истифодаи CPU ҳангоми санҷиши воридкунӣ барои силсилаи беназири 4M.

VictoriaMetrics қариб тамоми қувваи воҳиди коркард (CPU) -ро истифода мебарад. Тарки дар охир ба якҷояшавии боқимондаи LSM пас аз ворид кардани ҳама маълумот мувофиқат мекунад.

InfluxDB танҳо 8 аз 16 vCPU-ро истифода мебарад, дар ҳоле ки TimsecaleDB 4 аз 16 vCPU-ро истифода мебарад. Графикҳои онҳо чӣ умумият доранд? Ҳиссаи баланд iowait, ки боз як мушкилии I/O-ро нишон медиҳад.

TimescaleDB ҳиссаи баланд дорад system. Мо тахмин мезанем, ки қувваи баланд боиси зангҳои зиёди система ё шумораи зиёди онҳо гардид хатогиҳои хурди саҳифа.

Биёед ба графикҳои интиқоли диск назар андозем:

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: VictoriaMetrics - Истифодаи фарохмаҷрои диск барои ворид кардани ченакҳои беназири 4M.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: InfluxDB - Истифодаи фарохмаҷрои диск барои ворид кардани ченакҳои беназири 4M.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: TimescaleDB - Истифодаи фарохмаҷрои диск барои ворид кардани ченакҳои беназири 4M.

VictoriaMetrics дар авҷи баланд ба ҳадди 120 МБ/с расид, дар ҳоле ки суръати миёнаи навиштан 40 МБ/с буд. Эҳтимол аст, ки дар давоми авҷи авҷ якчанд fusions вазнин LSM анҷом дода шуд.

InfluxDB бори дигар интиқоли миёнаи навиштанро 200 МБ/с бо қуллаҳои то 340 МБ/с дар диск бо маҳдудияти навиштан 120 МБ/с кам мекунад :)

TimescaleDB дигар диск маҳдуд нест. Чунин ба назар мерасад, ки он бо чизи дигаре, ки бо таносуби баланд алоқаманд аст, маҳдуд аст системной сарбории CPU.

Биёед ба графикҳои истифодаи IO назар андозем:

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: VictoriaMetrics - Истифодаи I/O ҳангоми санҷиши воридкунӣ барои силсилаи беназири вақтҳои 4M.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: InfluxDB - Истифодаи I/O ҳангоми санҷиши воридкунӣ барои силсилаи беназири вақтҳои 4M.

Нишондиҳандаи баландсифати TSDB VictoriaMetrics против TimescaleDB против InfluxDB

Дар боло скриншот аст: TimescaleDB - Истифодаи I/O ҳангоми санҷиши воридкунӣ барои силсилаи вақтҳои беназири 4M.

Намунаҳои истифодаи IO дорои маҷрои дискҳои дискро инъикос мекунанд - InfluxDB IO маҳдуд аст, дар ҳоле ки VictoriaMetrics ва TimescaleDB захираҳои эҳтиётии IO доранд.

Силсилаи беназири 40M

Силсилаи беназири 40 миллион вақт барои InfluxDB хеле калон буд :)

Натиҷаҳои муқоисавӣ:

  • VictoriaMetrics: 1,7M нуқтаҳои маълумот дар як сония; Истифодаи RAM: 29 ГБ; Истифодаи фазои диск: 17 ГБ.
  • InfluxDB: Ба охир нарасид, зеро он зиёда аз 60 ГБ хотираи оперативӣ талаб мекард.
  • TimescaleDB: 330K нуқтаҳои маълумот дар як сония, истифодаи RAM: 2,5 ГБ; Истифодаи фазои диск: 84 ГБ.

TimescaleDB истифодаи бениҳоят паст ва устувори RAM-ро дар 2,5 ГБ нишон медиҳад - ҳамон тавре ки барои ченакҳои беназири 4M ва 400K.

VictoriaMetrics оҳиста-оҳиста бо суръати 100k нуқтаи додаҳо дар як сония афзоиш ёфт, то он даме, ки ҳамаи номҳои метрикӣ бо 40 миллион ишорашуда коркард карда шаванд. Пас аз он ӯ ба суръати устувори воридкунии 1,5-2,0M нуқтаи додаҳо дар як сония ноил шуд, аз ин рӯ натиҷаи ниҳоӣ 1,7М нуқтаи дода дар як сония буд.

Графикҳои силсилаи вақтҳои беназири 40M ба графикҳои силсилаи вақтҳои беназири 4M монанданд, аз ин рӯ биёед онҳоро гузаред.

натиҷаҳои

  • TSDB-ҳои муосир қодиранд, ки замимаҳоро барои миллионҳо силсилаи беназири вақт дар як сервер коркард кунанд. Дар мақолаи навбатӣ, мо месанҷем, ки то чӣ андоза TSDB-ҳо интихобро дар миллионҳо силсилаи беназири вақт иҷро мекунанд.
  • Истифодаи нокифояи CPU одатан мушкилоти вуруд / баромадро нишон медиҳад. Он инчунин метавонад нишон диҳад, ки басташавӣ хеле дағал аст ва танҳо якчанд риштаҳо метавонанд дар як вақт кор кунанд.
  • Маҳдудияти I/O вуҷуд дорад, махсусан дар нигаҳдории ғайри SSD ба монанди дастгоҳҳои блоки виртуалии провайдерҳои абрӣ.
  • VictoriaMetrics беҳтарин оптимизатсияро барои нигоҳдории суст ва пасти вуруд / баромад таъмин мекунад. Он беҳтарин суръат ва беҳтарин таносуби фишурдасозиро таъмин мекунад.

Зеркашӣ кунед Тасвири як-сервери VictoriaMetrics ва онро дар маълумоти худ санҷед. Бинарии статикии мувофиқ дар он дастрас аст GitHub.

Дар ин бора дар бораи VictoriaMetrics бештар хонед мақола.

Навсозӣ: нашр шудааст мақолаи муқоисаи иҷрои варақаи VictoriaMetrics бо InfluxDB бо натиҷаҳои такроршаванда.

Навсозии №2: Ҳамчунин хонед мақола дар бораи миқёспазирии амудӣ VictoriaMetrics против InfluxDB vs TimescaleDB.

Навсозии №3: VictoriaMetrics ҳоло манбаи кушода аст!

Чати Telegram: https://t.me/VictoriaMetrics_ru1

Манбаъ: will.com

Илова Эзоҳ