Анализ TSDB в Prometheus 2

Анализ TSDB в Prometheus 2

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов (TSDB, time series database) Π² Prometheus 2 – это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² сравнСнии с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ v2 Π² Prometheus 1 Π² ΠΏΠ»Π°Π½Π΅ скорости накоплСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ выполнСния запросов, эффСктивности использования рСсурсов. ΠœΡ‹ внСдряли Prometheus 2 Π² Percona Monitoring and Management (PMM), ΠΈ Ρƒ мСня Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Prometheus 2 TSDB. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… этих наблюдСний.

БрСдняя рабочая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Prometheus

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… основного назначСния, обычная рабочая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Prometheus довольно Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Π°. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ накоплСния Π΄Π°Π½Π½Ρ‹Ρ… стрСмится ΠΊ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅: ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚Π΅, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ количСство ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΈ инфраструктура мСняСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
Запросы ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников. НСкоторыС ΠΈΠ· Π½ΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π»Π΅Ρ€Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΆΠ΅ стрСмятся ΠΊ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΈ прСдсказуСмой Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅. Π”Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ запросы, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ всплСски, хотя, это Π½Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ для большСй части Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ВСст Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π’ Ρ…ΠΎΠ΄Π΅ тСстирования я сконцСнтрировался Π½Π° способности Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π― Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ» Prometheus 2.3.2, скомпилированный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Go 1.10.1 (ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ PMM 1.14) Π½Π° сСрвисС Linode, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот скрипт: StackScript. Для максимально рСалистичного гСнСрирования Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этого StackScript я запустил нСсколько MySQL-Π½ΠΎΠ΄ с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ (Sysbench TPC-C Test), каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… эмулировала 10 Π½ΠΎΠ΄ Linux/MySQL.
ВсС Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ тСсты ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π° сСрвСрС Linode с восСмью Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ядрами ΠΈ 32 Π“Π±Π°ΠΉΡ‚ памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ 20 Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹Ρ… симуляций ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° двухсот инстансов MySQL. Или, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Prometheus, 800 Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΎΠ² (targets), 440 сборов (scrapes) Π² сСкунду, 380 тысяч записСй (samples) Π² сСкунду ΠΈ 1,7 ΠΌΠ»Π½ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов.

Π”ΠΈΠ·Π°ΠΉΠ½

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ‚ΠΎΠΌ числС Ρ‚ΠΎΡ‚, Ρ‡Ρ‚ΠΎ использовал Prometheus 1.x, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π»ΠΈΠΌΠΈΡ‚Π΅ памяти. Если Π΅Π³ΠΎ нСдостаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с большими Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ запросы Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. ИспользованиС памяти Π² Prometheus 2 конфигурируСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡ storage.tsdb.min-block-duration, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ записи Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² памяти ΠΏΠ΅Ρ€Π΅Π΄ сбросом Π½Π° диск (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это 2 часа). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ памяти Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ количСства Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов, ярлыков (labels) ΠΈ интСнсивности сбора Π΄Π°Π½Π½Ρ‹Ρ… (scrapes) Π² суммС с чистым входящим ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. Π’ ΠΏΠ»Π°Π½Π΅ дискового пространства Prometheus стрСмится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ 3 Π±Π°ΠΉΡ‚Π° Π½Π° запись (sample). Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, трСбования ΠΊ памяти ΠΊΡƒΠ΄Π° Π²Ρ‹ΡˆΠ΅.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ°, Π½Π΅ рСкомСндуСтся Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, поэтому Π²Ρ‹ поставлСны ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π΄Π°Ρ‚ΡŒ Prometheus ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ памяти, сколько ΠΎΠ½ попросит для вашСй Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
Если памяти Π±ΡƒΠ΄Π΅Ρ‚ нСдостаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ входящий ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Prometheus ΡƒΠΏΠ°Π΄Ρ‘Ρ‚ с out of memory ΠΈΠ»ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ добСрётся OOM killer.
Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ swap, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ падСния, ΠΊΠΎΠ³Π΄Π° Ρƒ Prometheus заканчиваСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½Π΅ особо ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ использованиС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π·Ρ€Ρ‹Π²Π½ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»ΠΎ Π² Go, Π΅Π³ΠΎ garbage collector ΠΈ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со swap.
Π”Ρ€ΡƒΠ³ΠΈΠΌ интСрСсным ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ выглядит настройка сброса head block Π½Π° диск Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ врСмя, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ старта процСсса.

Анализ TSDB в Prometheus 2

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ· Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, сбросы Π½Π° диск происходят ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Π΄Π²Π° часа. Если Π²Ρ‹ помСняСтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ min-block-duration Π½Π° ΠΎΠ΄ΠΈΠ½ час, Ρ‚ΠΎ эти сбросы Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ час, начиная Ρ‡Π΅Ρ€Π΅Π· полчаса.
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² вашСй инсталляции Prometheus, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Π΄Π°ΡˆΠ±ΠΎΡ€Π΄. Он Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для PMM, Π½ΠΎ, с нСбольшими измСнСниями, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ любой инсталляции Prometheus.
Π£ нас Π΅ΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ head block, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² памяти; Π±Π»ΠΎΠΊΠΈ ΠΆΠ΅ с Π±ΠΎΠ»Π΅Π΅ старыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ доступны Ρ‡Π΅Ρ€Π΅Π· mmap(). Π­Ρ‚ΠΎ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ кСш ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ достаточно мСста для кСша ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ запросы ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΡΡ‚Π°Ρ€ΡˆΠ΅ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ head block.
А Π΅Ρ‰Ρ‘ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Prometheus Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ довольно высоким, ΠΎ Ρ‡Ρ‘ΠΌ Π½Π΅ стоит Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ.

Анализ TSDB в Prometheus 2

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ интСрСсный ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄ΠΈΠ·Π°ΠΉΠ½Π° – использованиС WAL (write ahead log). Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ, Prometheus ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ WAL для избСТания ΠΏΠΎΡ‚Π΅Ρ€ΡŒ ΠΏΡ€ΠΈ падСниях. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ ТивучСсти Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊ соТалСнию, нСдостаточно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. ВСрсия Prometheus 2.3.2 сбрасываСт WAL Π½Π° диск ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 сСкунд, ΠΈ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ конфигурируСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

УплотнСния (Compactions)

Prometheus TSDB спроСктирована ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρƒ LSM-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Log Structured merge β€” ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½ΠΎ-структурированноС Π΄Π΅Ρ€Π΅Π²ΠΎ со слияниСм): head block сбрасываСтся пСриодичСски Π½Π° диск, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ уплотнСния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ нСсколько Π±Π»ΠΎΠΊΠΎΠ² вмСстС для избСТания сканирования слишком большого количСства Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ запросах. Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ количСство Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я наблюдал Π½Π° тСстовой систСмС послС суток Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Анализ TSDB в Prometheus 2

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» meta.json, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ информация ΠΎΠ± ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π±Π»ΠΎΠΊΠ°Ρ… ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ появились.

{
Β Β Β Β Β Β Β "ulid": "01CPZDPD1D9R019JS87TPV5MPE",
Β Β Β Β Β Β Β "minTime": 1536472800000,
Β Β Β Β Β Β Β "maxTime": 1536494400000,
Β Β Β Β Β Β Β "stats": {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "numSamples": 8292128378,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "numSeries": 1673622,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "numChunks": 69528220
Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β "compaction": {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "level": 2,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "sources": [
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "01CPYRY9MS465Y5ETM3SXFBV7X",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "01CPYZT0WRJ1JB1P0DP80VY5KJ",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "01CPZ6NR4Q3PDP3E57HEH760XS"
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ],
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "parents": [
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "ulid": "01CPYRY9MS465Y5ETM3SXFBV7X",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "minTime": 1536472800000,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "maxTime": 1536480000000
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "ulid": "01CPYZT0WRJ1JB1P0DP80VY5KJ",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "minTime": 1536480000000,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "maxTime": 1536487200000
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "ulid": "01CPZ6NR4Q3PDP3E57HEH760XS",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "minTime": 1536487200000,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "maxTime": 1536494400000
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β }
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ]
Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β "version": 1
}

УплотнСния Π² Prometheus привязаны ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сброса head block Π½Π° диск. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ нСсколько Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Анализ TSDB в Prometheus 2

Будя ΠΏΠΎ всСму, уплотнСния Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ большиС скачки дискового I/O Π²ΠΎ врСмя выполнСния.

Анализ TSDB в Prometheus 2

Π‘ΠΊΠ°Ρ‡ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ CPU

Анализ TSDB в Prometheus 2

РазумССтся, это довольно Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ для LSM-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰: ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ уплотнСния для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ высокой скорости запросов ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ слишком сильного ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄Π°?
ИспользованиС памяти Π² процСссС ΡƒΠΏΠ»ΠΎΡ‚Π½Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠΆΠ΅ выглядит довольно Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ.

Анализ TSDB в Prometheus 2

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ послС уплотнСния большая Ρ‡Π°ΡΡ‚ΡŒ памяти мСняСт состояниС с Cached Π½Π° Free: Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ цСнная информация Π±Ρ‹Π»Π° ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΡƒΠ±Ρ€Π°Π½Π°. Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ Ρ‚ΡƒΡ‚ fadvice() ΠΈΠ»ΠΈ какая-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ это Π²Ρ‹Π·Π²Π°Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ кСш Π±Ρ‹Π» освобоТдён ΠΎΡ‚ Π±Π»ΠΎΠΊΠΎΠ², ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΡƒΠΏΠ»ΠΎΡ‚Π½Π΅Π½ΠΈΠΈ?

ВосстановлСниС послС сбоя

ВосстановлСниС послС сбоСв Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя, ΠΈ это обосновано. Для входящСго ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ записСй Π² сСкунду ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ»ΠΎ 25 ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ восстановлСниС с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ SSD-диска.

level=info ts=2018-09-13T13:38:14.09650965Z caller=main.go:222 msg="Starting Prometheus" version="(version=2.3.2, branch=v2.3.2, revision=71af5e29e815795e9dd14742ee7725682fa14b7b)"
level=info ts=2018-09-13T13:38:14.096599879Z caller=main.go:223 build_context="(go=go1.10.1, user=Jenkins, date=20180725-08:58:13OURCE)"
level=info ts=2018-09-13T13:38:14.096624109Z caller=main.go:224 host_details="(Linux 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 1bee9e9b78cf (none))"
level=info ts=2018-09-13T13:38:14.096641396Z caller=main.go:225 fd_limits="(soft=1048576, hard=1048576)"
level=info ts=2018-09-13T13:38:14.097715256Z caller=web.go:415 component=web msg="Start listening for connections" address=:9090
level=info ts=2018-09-13T13:38:14.097400393Z caller=main.go:533 msg="Starting TSDB ..."
level=info ts=2018-09-13T13:38:14.098718401Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536530400000 maxt=1536537600000 ulid=01CQ0FW3ME8Q5W2AN5F9CB7R0R
level=info ts=2018-09-13T13:38:14.100315658Z caller=web.go:467 component=web msg="router prefix" prefix=/prometheus
level=info ts=2018-09-13T13:38:14.101793727Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536732000000 maxt=1536753600000 ulid=01CQ78486TNX5QZTBF049PQHSM
level=info ts=2018-09-13T13:38:14.102267346Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536537600000 maxt=1536732000000 ulid=01CQ78DE7HSQK0C0F5AZ46YGF0
level=info ts=2018-09-13T13:38:14.102660295Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536775200000 maxt=1536782400000 ulid=01CQ7SAT4RM21Y0PT5GNSS146Q
level=info ts=2018-09-13T13:38:14.103075885Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536753600000 maxt=1536775200000 ulid=01CQ7SV8WJ3C2W5S3RTAHC2GHB
level=error ts=2018-09-13T14:05:18.208469169Z caller=wal.go:275 component=tsdb msg="WAL corruption detected; truncating" err="unexpected CRC32 checksum d0465484, want 0" file=/opt/prometheus/data/.prom2-data/wal/007357 pos=15504363
level=info ts=2018-09-13T14:05:19.471459777Z caller=main.go:543 msg="TSDB started"
level=info ts=2018-09-13T14:05:19.471604598Z caller=main.go:603 msg="Loading configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499156711Z caller=main.go:629 msg="Completed loading of configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499228186Z caller=main.go:502 msg="Server is ready to receive web requests."

Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° процСсса восстановлСния β€” высокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ситуации сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ памяти, ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ ΠΈΠ·-Π·Π° OOM. ЕдинствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Π½Π°ΡˆΡ‘Π», это ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сбор Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ сСрвСр, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ со Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ сбором.

Π Π°Π·ΠΎΠ³Ρ€Π΅Π²

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·ΠΎΠ³Ρ€Π΅Π²Π° β€” ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ высокого потрСблСния рСсурсов прямо послС старта. Π’ Ρ…ΠΎΠ΄Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π½ΠΎ Π½Π΅ всСх стартов я наблюдал ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎ CPU ΠΈ памяти.

Анализ TSDB в Prometheus 2

Анализ TSDB в Prometheus 2

ΠŸΡ€ΠΎΠ²Π°Π»Ρ‹ Π² использовании памяти говорят ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Prometheus Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ со старта ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС сборы, ΠΈ какая-Ρ‚ΠΎ информация оказываСтся потСряна.
Π― Π½Π΅ выяснил Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° процСссор ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽ Ρ‡Ρ‚ΠΎ это связано с созданиСм Π½ΠΎΠ²Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов Π² head block с высокой частотой.

Π‘ΠΊΠ°Ρ‡ΠΊΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° CPU

Помимо ΡƒΠΏΠ»ΠΎΡ‚Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ довольно Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎ I/O, я Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ скачки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° процСссор ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Π΄Π²Π΅ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹. ВсплСски дольшС ΠΏΡ€ΠΈ высоком входящСм ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ сборщиком мусора Go, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ядра ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹.

Анализ TSDB в Prometheus 2

Анализ TSDB в Prometheus 2

Π­Ρ‚ΠΈ скачки Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ нСсущСствСнны. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, внутрСнняя Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Prometheus становятся нСдоступны, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°Π»Ρ‹ Π² Π΄Π°Π½Π½Ρ‹Ρ… Π² эти ΠΆΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Анализ TSDB в Prometheus 2

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ экспортёр Prometheus затыкаСтся Π½Π° ΠΎΠ΄Π½Ρƒ сСкунду.

Анализ TSDB в Prometheus 2

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ коррСляции с ΡƒΠ±ΠΎΡ€ΠΊΠΎΠΉ мусора (GC).

Анализ TSDB в Prometheus 2

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

TSDB Π² Prometheus 2 дСйствуСт быстро, способна ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя с тысячами записСй, ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅ΠΌΡ‹Ρ… Π² сСкунду, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ довольно скромноС ΠΆΠ΅Π»Π΅Π·ΠΎ. Утилизация CPU ΠΈ дискового I/O Ρ‚ΠΎΠΆΠ΅ впСчатляСт. Мой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π» Π΄ΠΎ 200 000 ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π² сСкунду Π½Π° ΠΎΠ΄Π½ΠΎ использованноС ядро.

Для планирования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ достаточных ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… памяти, ΠΈ это Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠžΠ±ΡŠΡ‘ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я наблюдал, составлял ΠΎΠΊΠΎΠ»ΠΎ 5 Π“Π±Π°ΠΉΡ‚ Π½Π° 100 000 записСй Π² сСкунду входящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°Π»ΠΎ Π² суммС с кСшСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΎΠΊΠΎΠ»ΠΎ 8 Π“Π±Π°ΠΉΡ‚ занятой памяти.

РазумССтся, Π΅Ρ‰Ρ‘ прСдстоит Π½Π΅ΠΌΠ°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ всплСсков CPU ΠΈ дискового I/O, ΠΈ это Π½Π΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, учитывая, насколько Π΅Ρ‰Ρ‘ ΠΌΠΎΠ»ΠΎΠ΄Π° TSDB Prometheus 2 Π² сравнСнии с InnoDB, TokuDB, RocksDB, WiredTiger, Π½ΠΎ всС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

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