Статистика архивации
Отслеживать статистику архивации можно с помощью методов cooler.info() и cooler.stats(). Для этого:
-
В TCM подключитесь к одному из лидеров хранилищ и перейдите на вкладку Terminal (
TT Connect). -
Во вкладке Terminal загрузите модуль
cooler:cooler = require('cooler') -
Вызовите метод
cooler.info():cooler.info()Метод выводит следующую информацию о параметрах архивирования для спейса на текущем экземпляре:
memtx_space— имя спейса memtx;memtx_tuples_count— количество кортежей в спейсе memtx;memtx_bytes_count— размер спейса memtx в байтах;vinyl_space— имя спейса vinyl;vinyl_params— параметры спейса vinyl (см. параметры в cooler.setup(memtx_space_name, options)). Полный список доступных параметров vinyl и их подробное описание приведены в документации платформы Tarantool;vinyl_tuples_count— количество кортежей в спейсе vinyl;vinyl_bytes_count— размер спейса vinyl в байтах;is_cooled_fun— имя функции-предиката для проверки условия архивации;cooling_indexes— имена индексов, по которым выполняется архивация;resetup_count— количество вызовов метода cooler.resetup() для спейса.
-
Вызовите метод
cooler.stats():cooler.stats()Метод выводит статистику архивации для текущего полного прохода по спейсу:
scan_elapsed— время с начала полного прохода в секундах;tuples_cooled— количество архивированных кортежей за текущий проход по спейсу;bytes_cooled— объем архивированных данных в байтах за текущий проход по спейсу;tuples_scanned— количество просканированных кортежей за текущий проход по спейсу;bytes_scanned— объем просканированных данных в байтах за текущий проход по спейсу;avg_rate— средняя скорость архивации (кортежи в секунду);avg_bytes_rate— средняя скорость архивации (байты в секунду);tuples_remaining— оценка количества оставшихся кортежей до завершения прохода;eta— оценка времени до завершения прохода в секундах;mismatch_count— количество несовпадений при проверке кортежей memtx в ходе их переноса в спейс vinyl. После переноса кортежа в спейс vinyl и до его удаления из спейса memtx эти кортежи сравниваются между собой. Если во время переноса кортеж memtx был изменен, в vinyl остаётся предыдущая версия кортежа. В этом случае значениеcooler_mismatchesувеличивается на 1;errors_count— количество ошибок, возникших во время архивации.
Для отслеживания процесса переноса данных в Tarantool DB доступен набор метрик модуля cooler.
Эти метрики включают в себя:
- (c версии 3.0.0) метрики для каждой задачи архивации с разбивкой по ключам
spaceиindex— спейсу и индексу, по которым выполняется архивация; - (c версии 3.2.0) сводные метрики по спейсам с разбивкой по ключу
space— размер данных спейса и количество кортежей в нем.
Полный список доступных метрик модуля можно найти в разделе Метрики Tarantool DB.
Для просмотра метрик в TCM откройте вкладку Cluster > Cluster metrics.
Все доступные метрики архивации помечены в списке префиксом cooler.
Чтобы проверить, включена ли архивация, в строке поиска найдите метрику cooler_on.
Убедитесь, что она равна 1 на каждом из лидеров хранилищ - это означает, что архивация запущена.
Смотрите также: Мониторинг в Tarantool DB.
Методы cooler.info() и cooler.stats() позволяют оценить состояние архивации и выявить потенциальные проблемы.
Ниже приведены рекомендации по интерпретации ключевых показателей.
Смотрите также: Рекомендации по настройке оповещений для модуля cooler.
-
Метрика
cooler_on— архивация активна, если метрика равна1на лидерах хранилищ. При значении0проверьте, что технологическая рольroles.coolerнастроена в конфигурации и секцияroles_cfgне пуста; -
resetup_count— количество вызововcooler.resetup(). Растущее значение нормально при изменении формата спейсов: старые спейсы на vinyl с суффиксами_1,_2и далее остаются на диске, и это может увеличивать потребление дискового пространства. Рекомендуется периодически проверять и удалять неиспользуемые архивные спейсы.
-
tuples_remainingиetaпоказывают, сколько кортежей осталось обработать до завершения текущего прохода и примерное время до его окончания. Еслиetaстабильно растёт, аtuples_cooledне увеличивается — возможно, выполнение задачи архивации замедлилось; -
scan_elapsed— время с начала текущего прохода. Если время значительно превышает значениеfull_scan_time, настроенное в конфигурации роли, это означает, что модуль не успевает обойти спейс за отведённое время. Решение: увеличьтеfull_scan_timeилиtuples_per_iteration. -
avg_rate— средняя скорость архивации. При резком снижении скорости проверьте нагрузку на диск и CPU экземпляра. Возможно, движок vinyl выполняет compaction, что временно ограничивает скорость записи.
-
mismatch_count(метрикаcooler_mismatches) — количество несовпадений версий кортежей при переносе. Небольшое количество несовпадений (единицы) — нормальное поведение при конкурентном доступе к данным. Но стабильный рост значенияmismatch_count— это признак того, что под архивацию попадают кортежи, которые активно модифицируются пользователями. Решение проблемы приведено в разделе Аномальное количество несовпадений версий; -
errors_count(метрикаcooler_errors) — количество ошибок при архивации. Если значение больше 0 и продолжает расти, проверьте логи экземпляра. Решение проблемы приведено в разделе Возникновение большого количества ошибок при перемещении данных.
-
Соотношение
tuples_cooledкtuples_scannedпоказывает эффективность архивации. Если архивируется менее 1% от просканированных кортежей — задача тратит ресурсы впустую. Это означает, что обход настроен по индексу, который не соотносится с условием архивации, и большая часть кортежей проверяется, но не соответствует условию. Для решения проблемы настройте обход по вторичному индексу, который соответствует полю условия архивации Подробное описание проблемы и ее решение приведено в разделе Неэффективное сканирование; -
Значение метрики
cooler_inefficiency— количество просканированных, но не архивированных кортежей за всё время работы задачи. Высокое значение при маломtuples_cooledтакже является признаком неэффективного сканирования.
-
Значение метрики
cooler_vinyl_bytes_total— общий размер данных спейса на vinyl. Если метрика быстро растёт, проверьте скорость compaction в vinyl. Решение проблемы приведено в разделе Критический рост размера архива; -
Значение метрики
cooler_memtx_bytes_total— общий размер данных спейса в движке memtx. Если значение метрики не снижается после запуска архивации — возможно, условие архивации не соответствует данным, либо архивация не успевает за скоростью добавления новых кортежей.