புரோஹோஸ்டர் > Блог > நிர்வாகம் > உயர் செயல்திறன் TSDB பெஞ்ச்மார்க் VictoriaMetrics vs TimescaleDB vs InfluxDB
உயர் செயல்திறன் TSDB பெஞ்ச்மார்க் VictoriaMetrics vs TimescaleDB vs InfluxDB
VictoriaMetrics, TimescaleDB மற்றும் InfluxDB ஆகியவை ஒப்பிடப்பட்டன முந்தைய கட்டுரை 40K தனிப்பட்ட நேரத் தொடரைச் சேர்ந்த பில்லியன் தரவுப் புள்ளிகளைக் கொண்ட தரவுத்தொகுப்பில்.
சில ஆண்டுகளுக்கு முன்பு ஜாபிக்ஸின் சகாப்தம் இருந்தது. ஒவ்வொரு வெற்று உலோக சேவையகமும் சில குறிகாட்டிகளுக்கு மேல் இல்லை - CPU பயன்பாடு, ரேம் பயன்பாடு, வட்டு பயன்பாடு மற்றும் நெட்வொர்க் பயன்பாடு. இந்த வழியில், ஆயிரக்கணக்கான சேவையகங்களின் அளவீடுகள் 40 ஆயிரம் தனிப்பட்ட நேரத் தொடரில் பொருந்தலாம், மேலும் Zabbix நேரத் தொடர் தரவுகளுக்கான பின்தளமாக MySQL ஐப் பயன்படுத்தலாம் :)
தற்போது தனியாக முனை_ஏற்றுமதியாளர் இயல்புநிலை உள்ளமைவுகளுடன் சராசரி ஹோஸ்டில் 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 கூகுள் கிளவுட்டில். இந்த நிகழ்வுகள் பின்வரும் கட்டமைப்புகளைக் கொண்டிருந்தன:
vCPUகள்: 16
ரேம்: 60 ஜிபி
சேமிப்பு: நிலையான 1TB HDD. இது 120 Mbps ரீட்/ரைட் த்ரோபுட், வினாடிக்கு 750 ரீட் ஆபரேஷன்கள் மற்றும் வினாடிக்கு 1,5K ரைட்களை வழங்குகிறது.
TSDBகள் அதிகாரப்பூர்வ டோக்கர் படங்களிலிருந்து பிரித்தெடுக்கப்பட்டு பின்வரும் உள்ளமைவுகளுடன் டோக்கரில் இயங்குகின்றன:
விக்டோரியாமெட்ரிக்ஸ்:
docker run -it --rm -v /mnt/disks/storage/vmetrics-data:/victoria-metrics-data -p 8080:8080 valyala/victoria-metrics
அதிக சக்தியை ஆதரிக்க InfluxDB (-e) மதிப்புகள் தேவை. விவரங்களைப் பார்க்கவும் ஆவணங்கள்):
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 தரவு புள்ளிகள்; ரேம் பயன்பாடு: 3 ஜிபி; வட்டில் உள்ள இறுதி தரவு அளவு: 965 எம்பி
InfluxDB: வினாடிக்கு 1.2M தரவுப் புள்ளிகள்; ரேம் பயன்பாடு: 8.5 ஜிபி; வட்டில் உள்ள இறுதி தரவு அளவு: 1.6 ஜிபி
கால அளவு: வினாடிக்கு 849K தரவு புள்ளிகள்; ரேம் பயன்பாடு: 2,5 ஜிபி; வட்டில் உள்ள இறுதி தரவு அளவு: 50 ஜிபி
மேலே உள்ள முடிவுகளிலிருந்து நீங்கள் பார்க்க முடியும் என, செருகும் செயல்திறன் மற்றும் சுருக்க விகிதத்தில் VictoriaMetrics வெற்றி பெறுகிறது. ரேம் பயன்பாட்டில் டைம்லைன் வெற்றி பெறுகிறது, ஆனால் இது அதிக வட்டு இடத்தைப் பயன்படுத்துகிறது - ஒரு தரவு புள்ளிக்கு 29 பைட்டுகள்.
அளவுகோலின் போது TSDBகள் ஒவ்வொன்றிற்கும் CPU பயன்பாட்டு வரைபடங்கள் கீழே உள்ளன:
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: விக்டோரியாமெட்ரிக்ஸ் - தனிப்பட்ட 400K மெட்ரிக்கிற்கான செருகும் சோதனையின் போது CPU சுமை.
மேலே ஒரு ஸ்கிரீன் ஷாட் உள்ளது: InfluxDB - தனிப்பட்ட மெட்ரிக் 400K க்கான செருகும் சோதனையின் போது CPU சுமை.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: TimescaleDB - 400K இன் பிரத்யேக அளவீட்டுக்கான செருகும் சோதனையின் போது CPU சுமை.
VictoriaMetrics கிடைக்கக்கூடிய அனைத்து vCPUகளையும் பயன்படுத்துகிறது, அதே நேரத்தில் InfluxDB 2 vCPUகளில் ~16ஐ குறைவாகப் பயன்படுத்துகிறது.
டைம்ஸ்கேல் 3 vCPUகளில் 4-16ஐ மட்டுமே பயன்படுத்துகிறது. டைம்ஸ்கேல்டிபி டைம்ஸ்கேல் கிராஃபில் ஐயோவைட் மற்றும் சிஸ்டத்தின் அதிக விகிதங்கள் உள்ளீடு/வெளியீடு (I/O) துணை அமைப்பில் ஒரு இடையூறைக் குறிக்கிறது. வட்டு அலைவரிசை பயன்பாட்டு வரைபடங்களைப் பார்ப்போம்:
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: விக்டோரியாமெட்ரிக்ஸ் - தனித்த அளவீடுகள் 400K க்கான செருகும் சோதனையில் வட்டு அலைவரிசை பயன்பாடு.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: InfluxDB - Unique Metrics 400K க்கான செருகும் சோதனையில் டிஸ்க் அலைவரிசை பயன்பாடு.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: டைம்ஸ்கேல்டிபி - தனித்த அளவீடுகள் 400K க்கான செருகும் சோதனையில் வட்டு அலைவரிசை பயன்பாடு.
VictoriaMetrics 20 Mbps வேகத்தில் 45 Mbps வரையிலான தரவை பதிவு செய்கிறது. சிகரங்கள் மரத்தில் பெரிய பகுதி இணைப்புகளுக்கு ஒத்திருக்கும் எல்.எஸ்.எம்.
டைம்ஸ்கேல்டிபி 120 எம்பிபிஎஸ் த்ரோபுட்டை எழுதுவதற்கு மட்டுப்படுத்தப்பட்டுள்ளது, ஆனால் சில நேரங்களில் அது இந்த வரம்பை உடைத்து உச்ச மதிப்புகளில் 220 எம்பிபிஎஸ் அடையும். இந்த சிகரங்கள் முந்தைய வரைபடத்தில் போதுமான CPU பயன்பாட்டின் பள்ளத்தாக்குகளுக்கு ஒத்திருக்கும்.
உள்ளீடு/வெளியீடு (I/O) பயன்பாட்டு வரைபடங்களைப் பார்ப்போம்:
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: விக்டோரியாமெட்ரிக்ஸ் - 400K தனிப்பட்ட அளவீடுகளுக்கான சோதனை I/O பயன்பாட்டைச் செருகவும்.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: InfluxDB - 400K தனிப்பட்ட அளவீடுகளுக்கான சோதனை I/O பயன்பாட்டைச் செருகவும்.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: TimescaleDB - 400K தனிப்பட்ட அளவீடுகளுக்கான சோதனை I/O பயன்பாட்டைச் செருகவும்.
TimescaleDB அதன் I/O வரம்பை அடைகிறது என்பது இப்போது தெளிவாகிறது, எனவே அது மீதமுள்ள 12 vCPUகளைப் பயன்படுத்த முடியாது.
4M தனிப்பட்ட நேரத் தொடர்
4M நேரத் தொடர் கொஞ்சம் சவாலாகத் தெரிகிறது. ஆனால் எங்கள் போட்டியாளர்கள் இந்த தேர்வில் வெற்றிகரமாக தேர்ச்சி பெறுகிறார்கள். பெஞ்ச்மார்க் முடிவுகள்:
VictoriaMetrics: வினாடிக்கு 2,2M தரவு புள்ளிகள்; ரேம் பயன்பாடு: 6 ஜிபி; வட்டில் உள்ள இறுதி தரவு அளவு: 3 ஜிபி.
InfluxDB: வினாடிக்கு 330K தரவு புள்ளிகள்; ரேம் பயன்பாடு: 20,5 ஜிபி; வட்டில் உள்ள இறுதி தரவு அளவு: 18,4 ஜிபி.
TimescaleDB: வினாடிக்கு 480K தரவுப் புள்ளிகள்; ரேம் பயன்பாடு: 2,5 ஜிபி; வட்டில் உள்ள இறுதி தரவு அளவு: 52 ஜிபி.
InfluxDB செயல்திறன் 1,2K நேரத் தொடருக்கு வினாடிக்கு 400M தரவுப் புள்ளிகளிலிருந்து 330M நேரத் தொடருக்கு வினாடிக்கு 4K தரவுப் புள்ளிகளாகக் குறைந்தது. மற்ற போட்டியாளர்களுடன் ஒப்பிடும்போது இது ஒரு குறிப்பிடத்தக்க செயல்திறன் இழப்பாகும். இந்த இழப்பின் மூல காரணத்தைப் புரிந்து கொள்ள CPU பயன்பாட்டு வரைபடங்களைப் பார்ப்போம்:
மேலே ஒரு ஸ்கிரீன் ஷாட் உள்ளது: விக்டோரியாமெட்ரிக்ஸ் - தனிப்பட்ட 4M நேரத் தொடருக்கான செருகும் சோதனையின் போது CPU பயன்பாடு.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: InfluxDB - தனிப்பட்ட 4M நேரத் தொடருக்கான செருகும் சோதனையின் போது CPU பயன்பாடு.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: TimescaleDB - தனிப்பட்ட 4M நேரத் தொடருக்கான செருகும் சோதனையின் போது CPU பயன்பாடு.
VictoriaMetrics கிட்டத்தட்ட அனைத்து செயலாக்க அலகு (CPU) சக்தியைப் பயன்படுத்துகிறது. முடிவில் உள்ள துளியானது அனைத்து தரவும் செருகப்பட்ட பிறகு மீதமுள்ள LSM இணைப்புகளுக்கு ஒத்திருக்கும்.
InfluxDB 8 vCPUகளில் 16ஐ மட்டுமே பயன்படுத்துகிறது, TimsecaleDB 4 vCPUகளில் 16ஐப் பயன்படுத்துகிறது. அவர்களின் வரைபடங்கள் பொதுவானவை என்ன? அதிக பங்கு iowait, இது மீண்டும் ஒரு I/O தடையை குறிக்கிறது.
TimescaleDB அதிக பங்கைக் கொண்டுள்ளது system. அதிக சக்தி பல சிஸ்டம் அழைப்புகள் அல்லது பலவற்றில் விளைவதாக நாங்கள் கருதுகிறோம் சிறிய பக்க தவறுகள்.
வட்டு செயல்திறன் வரைபடங்களைப் பார்ப்போம்:
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: விக்டோரியாமெட்ரிக்ஸ் - 4M தனிப்பட்ட அளவீடுகளைச் செருகுவதற்கு வட்டு அலைவரிசையைப் பயன்படுத்துதல்.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: InfluxDB - 4M தனிப்பட்ட அளவீடுகளைச் செருக வட்டு அலைவரிசையைப் பயன்படுத்துதல்.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: TimescaleDB - 4M தனிப்பட்ட அளவீடுகளைச் செருக வட்டு அலைவரிசையைப் பயன்படுத்துதல்.
VictoriaMetrics உச்சத்தில் 120 MB/s என்ற வரம்பை எட்டியது, அதே நேரத்தில் சராசரி எழுதும் வேகம் 40 MB/s ஆக இருந்தது. உச்சத்தின் போது பல கனமான LSM இணைவுகள் செய்யப்பட்டிருக்கலாம்.
InfluxDB ஆனது 200 MB/s என்ற எழுத்து வரம்பைக் கொண்ட வட்டில் 340 MB/s வரை உச்சநிலையுடன் 120 MB/s என்ற சராசரி எழுதும் திறனை மீண்டும் அழுத்துகிறது :)
TimescaleDB இனி வட்டு வரையறுக்கப்படவில்லை. இது உயர் விகிதத்துடன் தொடர்புடைய வேறொன்றால் வரையறுக்கப்பட்டதாகத் தோன்றுகிறது системной CPU சுமை.
IO பயன்பாட்டு வரைபடங்களைப் பார்ப்போம்:
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: விக்டோரியாமெட்ரிக்ஸ் - தனிப்பட்ட 4M நேரத் தொடருக்கான செருகும் சோதனையின் போது I/O ஐப் பயன்படுத்துதல்.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: InfluxDB - தனிப்பட்ட 4M நேரத் தொடருக்கான செருகும் சோதனையின் போது I/O ஐப் பயன்படுத்துதல்.
மேலே ஒரு ஸ்கிரீன்ஷாட் உள்ளது: TimescaleDB - தனிப்பட்ட 4M நேரத் தொடருக்கான செருகும் சோதனையின் போது I/O பயன்பாடு.
IO பயன்பாட்டு முறைகள் வட்டு அலைவரிசையைப் பிரதிபலிக்கின்றன - InfluxDB IO வரையறுக்கப்பட்டுள்ளது, அதே நேரத்தில் VictoriaMetrics மற்றும் TimescaleDB உதிரி IO ஆதாரங்களைக் கொண்டுள்ளன.
40M தனிப்பட்ட நேரத் தொடர்
InfluxDBக்கு 40M தனிப்பட்ட நேரத் தொடர் மிகப் பெரியது :)
பெஞ்ச்மார்க் முடிவுகள்:
VictoriaMetrics: வினாடிக்கு 1,7M தரவு புள்ளிகள்; ரேம் பயன்பாடு: 29 ஜிபி; வட்டு இட உபயோகம்: 17 ஜிபி.
InfluxDB: 60GB க்கும் அதிகமான ரேம் தேவைப்படுவதால் முடிக்க முடியவில்லை.
டைம்ஸ்கேல்டிபி: வினாடிக்கு 330கே டேட்டா புள்ளிகள், ரேம் பயன்பாடு: 2,5 ஜிபி; வட்டு இட உபயோகம்: 84 ஜிபி.
TimescaleDB ஆனது 2,5 GB இல் விதிவிலக்காக குறைந்த மற்றும் நிலையான ரேம் பயன்பாட்டைக் காட்டுகிறது - தனிப்பட்ட 4M மற்றும் 400K அளவீடுகளைப் போலவே.
அனைத்து 100M குறியிடப்பட்ட மெட்ரிக் பெயர்களும் செயலாக்கப்படும் வரை VictoriaMetrics ஒரு நொடிக்கு 40k தரவு புள்ளிகள் என்ற விகிதத்தில் மெதுவாக அளவிடப்பட்டது. பின்னர் அவர் ஒரு வினாடிக்கு 1,5-2,0M தரவு புள்ளிகள் என்ற நிலையான செருகும் விகிதத்தை அடைந்தார், எனவே இறுதி முடிவு வினாடிக்கு 1,7M தரவு புள்ளிகள் ஆகும்.
40M தனிப்பட்ட நேரத் தொடருக்கான வரைபடங்கள் 4M தனிப்பட்ட நேரத் தொடருக்கான வரைபடங்களைப் போலவே இருக்கின்றன, எனவே அவற்றைத் தவிர்க்கலாம்.
கண்டுபிடிப்புகள்
நவீன TSDBகள் ஒரு சேவையகத்தில் மில்லியன் கணக்கான தனிப்பட்ட நேரத் தொடர்களுக்கான செருகல்களைச் செயலாக்கும் திறன் கொண்டவை. அடுத்த கட்டுரையில், மில்லியன் கணக்கான தனிப்பட்ட நேரத் தொடர்களில் TSDBகள் எவ்வளவு சிறப்பாகத் தேர்வைச் செய்கின்றன என்பதைச் சோதிப்போம்.
போதுமான CPU பயன்பாடு பொதுவாக I/O தடையை குறிக்கிறது. ஒரு நேரத்தில் சில இழைகள் மட்டுமே இயங்கக்கூடிய நிலையில், தடுப்பது மிகவும் கரடுமுரடானது என்பதையும் இது குறிக்கலாம்.
I/O இடையூறு உள்ளது, குறிப்பாக கிளவுட் வழங்குநர்களின் மெய்நிகராக்கப்பட்ட தொகுதி சாதனங்கள் போன்ற SSD அல்லாத சேமிப்பகத்தில்.
VictoriaMetrics மெதுவான, குறைந்த I/O சேமிப்பகத்திற்கான சிறந்த தேர்வுமுறையை வழங்குகிறது. இது சிறந்த வேகம் மற்றும் சிறந்த சுருக்க விகிதத்தை வழங்குகிறது.