TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Статистика архивации

Просмотр статистики

Отслеживать статистику архивации можно с помощью методов cooler.info() и cooler.stats(). Для этого:

  1. В TCM подключитесь к одному из лидеров хранилищ и перейдите на вкладку Terminal (TT Connect).

  2. Во вкладке Terminal загрузите модуль cooler:

    cooler = require('cooler')
  3. Вызовите метод 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() для спейса.
  4. Вызовите метод 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. Если значение метрики не снижается после запуска архивации — возможно, условие архивации не соответствует данным, либо архивация не успевает за скоростью добавления новых кортежей.