VictoriaMetrics, TimescaleDB ва InfluxDB дар муқоиса карда шуданд
Чанд сол пеш даврони Заббикс буд. Ҳар як сервери металлии луч на бештар аз чанд нишондиҳанда дошт - истифодаи CPU, истифодаи RAM, истифодаи диск ва истифодаи шабака. Бо ин роҳ, ченакҳо аз ҳазорҳо серверҳо метавонанд ба 40 ҳазор силсилаи беназири вақт мувофиқат кунанд ва Zabbix метавонад MySQL-ро ҳамчун пуштибонии маълумоти силсилаи вақт истифода барад :)
Айни замон танҳо
Шумораи зиёди силсилаи вақтҳои беназир дар айни замон чӣ гуна аст? Эҳтимол 400K ё 4M? Ё 40м? Биёед TSDB-ҳои муосирро бо ин рақамҳо муқоиса кунем.
Насб кардани нишондиҳанда
-scale-var
). 10 шумораи андозагирӣ (метрика) дар ҳар як мизбон ё сервер тавлидшуда аст. Маҷмӯи додаҳои зерин бо истифода аз TSBS барои муқоиса тавлид карда шуданд:
- 400K силсилаи беназири вақт, фосилаи 60 сония байни нуқтаҳои додаҳо, маълумот 3 рӯзи пурраро дар бар мегирад, ~ 1.7B шумораи умумии нуқтаҳои додаҳо.
- Силсилаи беназири вақтҳои 4M, фосилаи 600 сония, маълумот 3 рӯзи пурраро дар бар мегирад, ~ 1.7B шумораи умумии нуқтаҳои додаҳо.
- 40M силсилаи беназири вақт, фосилаи 1 соат, маълумот 3 рӯзи пурраро дар бар мегирад, ~ 2.8B шумораи умумии нуқтаҳои додаҳо.
Мизоҷ ва сервер дар мисолҳои махсус кор мекарданд
- 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 дар давоми санҷиш оварда шудаанд:
Дар боло скриншот аст: VictoriaMetrics - сарбории CPU ҳангоми санҷиши воридкунӣ барои метрикаи беназири 400K.
Дар боло як скриншот аст: InfluxDB - сарбории CPU ҳангоми санҷиши воридкунӣ барои 400К метрикаи беназир.
Дар боло як скриншот аст: TimescaleDB - сарбории CPU ҳангоми санҷиши воридкунӣ барои ченаки беназири 400K.
VictoriaMetrics ҳамаи vCPU-ҳои дастрасро истифода мебарад, дар ҳоле ки InfluxDB аз 2 vCPU-и ~ 16-ро кам истифода мебарад.
Ҷадвали вақт аз 3 vCPU танҳо 4-16-тоашро истифода мебарад. Таносуби баланди iowait ва система дар ҷадвали ҷадвали TimescaleDB монеа дар зерсистемаи вуруд/баромад (I/O)-ро нишон медиҳад. Биёед ба графикҳои истифодаи фарохмаҷрои диск назар андозем:
Дар боло скриншот мавҷуд аст: VictoriaMetrics - Истифодаи фарохмаҷрои диск дар санҷиши воридшавӣ барои ченакҳои беназири 400K.
Дар боло скриншот аст: InfluxDB - Истифодаи фарохмаҷрои диск дар санҷиши воридшавӣ барои ченакҳои беназири 400K.
Дар боло скриншот аст: TimescaleDB - Истифодаи фарохмаҷрои диск дар санҷиши воридшавӣ барои ченакҳои беназири 400K.
VictoriaMetrics маълумотро бо суръати 20 Мбит бо қуллаҳои то 45 Мбит / сония сабт мекунад. Қуллаҳо ба якҷояшавии қисман калон дар дарахт мувофиқанд
InfluxDB маълумотро бо суръати 160 МБ/с менависад, дар ҳоле ки диски 1 ТБ
TimescaleDB бо интиқоли сабти 120 Мбит / сония маҳдуд аст, аммо баъзан он ин маҳдудиятро вайрон мекунад ва дар қимматҳои баланд ба 220 Мбит / сония мерасад. Ин қуллаҳо ба водиҳои истифодаи нокифояи CPU дар графики қаблӣ мувофиқат мекунанд.
Биёед ба графикҳои истифодабарии воридот/баромад (I/O) назар андозем:
Дар боло скриншот аст: VictoriaMetrics - Гузаронидани истифодаи санҷиши I/O барои ченакҳои беназири 400K.
Дар боло скриншот мавҷуд аст: InfluxDB - Истифодаи санҷиши I/O барои ченакҳои беназири 400K ворид кунед.
Дар боло скриншот мавҷуд аст: 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 назар андозем, то сабаби аслии ин талафотро фаҳмем:
Дар боло скриншот аст: VictoriaMetrics - Истифодаи CPU ҳангоми санҷиши воридкунӣ барои силсилаи беназири 4M.
Дар боло як скриншот аст: InfluxDB - Истифодаи CPU ҳангоми санҷиши воридкунӣ барои силсилаи вақти беназири 4M.
Дар боло скриншот аст: TimescaleDB - Истифодаи CPU ҳангоми санҷиши воридкунӣ барои силсилаи беназири 4M.
VictoriaMetrics қариб тамоми қувваи воҳиди коркард (CPU) -ро истифода мебарад. Тарки дар охир ба якҷояшавии боқимондаи LSM пас аз ворид кардани ҳама маълумот мувофиқат мекунад.
InfluxDB танҳо 8 аз 16 vCPU-ро истифода мебарад, дар ҳоле ки TimsecaleDB 4 аз 16 vCPU-ро истифода мебарад. Графикҳои онҳо чӣ умумият доранд? Ҳиссаи баланд iowait
, ки боз як мушкилии I/O-ро нишон медиҳад.
TimescaleDB ҳиссаи баланд дорад system
. Мо тахмин мезанем, ки қувваи баланд боиси зангҳои зиёди система ё шумораи зиёди онҳо гардид
Биёед ба графикҳои интиқоли диск назар андозем:
Дар боло скриншот аст: VictoriaMetrics - Истифодаи фарохмаҷрои диск барои ворид кардани ченакҳои беназири 4M.
Дар боло скриншот аст: InfluxDB - Истифодаи фарохмаҷрои диск барои ворид кардани ченакҳои беназири 4M.
Дар боло скриншот аст: TimescaleDB - Истифодаи фарохмаҷрои диск барои ворид кардани ченакҳои беназири 4M.
VictoriaMetrics дар авҷи баланд ба ҳадди 120 МБ/с расид, дар ҳоле ки суръати миёнаи навиштан 40 МБ/с буд. Эҳтимол аст, ки дар давоми авҷи авҷ якчанд fusions вазнин LSM анҷом дода шуд.
InfluxDB бори дигар интиқоли миёнаи навиштанро 200 МБ/с бо қуллаҳои то 340 МБ/с дар диск бо маҳдудияти навиштан 120 МБ/с кам мекунад :)
TimescaleDB дигар диск маҳдуд нест. Чунин ба назар мерасад, ки он бо чизи дигаре, ки бо таносуби баланд алоқаманд аст, маҳдуд аст системной
сарбории CPU.
Биёед ба графикҳои истифодаи IO назар андозем:
Дар боло скриншот аст: VictoriaMetrics - Истифодаи I/O ҳангоми санҷиши воридкунӣ барои силсилаи беназири вақтҳои 4M.
Дар боло скриншот аст: InfluxDB - Истифодаи I/O ҳангоми санҷиши воридкунӣ барои силсилаи беназири вақтҳои 4M.
Дар боло скриншот аст: 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 бештар хонед
Навсозӣ: нашр шудааст
Навсозии №2: Ҳамчунин хонед
Навсозии №3:
Чати Telegram:
Манбаъ: will.com