Рекомендации по анализу метрик | Tdb
Руководство администратора Мониторинг Рекомендации по анализу метрик

Рекомендации по анализу метрик

При мониторинге системы рекомендуется в первую очередь обращать внимание на следующие группы метрик:

Note

Рекомендуемые и критические значения для большинства метрик из списка ниже рассчитываются на основе статистических данных промышленной эксплуатации или предварительной статистики, собранной на стенде нагрузочного тестирования. Для получения помощи в настройке таких метрик обратитесь к команде поддержки.

Статистика использования ЦП

Рекомендуемые и критические значения для метрик ниже определяются исходя из конкретного проекта. Узнать подробнее о метриках, связанных с использованием процессора, можно в разделе Статистика ЦП.

tnt_cpu_user_time

Среднее время использования CPU в секундах, затраченное процессом экземпляра на исполнение логики базы данных. Срабатывает при высокой нагрузке на заданном сервере.

Решение:

Определите место в коде приложения, которое вызывает всплеск нагрузки на CPU. Постоянно высокая загрузка CPU может говорить о нехватке вычислительных мощностей.

tnt_cpu_system_time

Среднее время использования CPU в секундах, затраченное процессом экземпляра на исполнение системного вызова.

Решение:

Большое значение метрики указывает на проблему в одной из подсистем. Одна из причин проблемы – выросшее значение параметра iowait(), в этой ситуации приложение тратит много ресурсов на чтение или запись на диск.

Статистика использования памяти

Рекомендуемые и критические значения для метрик ниже определяются исходя из конкретного проекта, если не указано иначе.

tnt_info_memory_lua

Объем памяти в байтах, используемый средой выполнения Lua-кода. Объем памяти Lua ограничен 2 Гб на каждый экземпляр (более 2 Гб на версиях GC64). Отслеживание метрики помогает предотвратить переполнение памяти и выявить некорректные методы работы с Lua-кодом. Рекомендуемое значение метрики: 25-100 МБ.

Порог срабатывания: значение больше 1 Гб (за исключением версий GC64).

Решение:

Одна из причин большой загруженности памяти – утечка памяти. Чтобы выяснить точную причину, вызовите функцию fiber.top(). Перезагрузите экземпляр после того, как определите причину проблемы.

tnt_runtime_used

Объем памяти в байтах, используемый средой выполнения Lua-кода (runtime arena) в данный момент. Среда выполнения хранит:

  • сетевые буферы;

  • кортежи, созданные с помощью box.tuple.new();

  • другие объекты, выделенные приложением, которые не охватывают базовые механизмы Lua.

Отслеживание метрики помогает предотвратить переполнение памяти и выявить некорректные методы работы с Lua-кодом. Рекомендуемое значение метрики близко к 0.

Порог срабатывания: значение заметно больше 0.

Решение:

Обратитесь к разработчику приложения для анализа проблемы.

tnt_info_memory_tx

Объем памяти в байтах, используемый активными транзакциями. Для движка vinyl это общий размер всех выделенных объектов и кортежей, закрепленных для этих объектов. Рекомендуемое значение метрики близко к 0.

Порог срабатывания: значение заметно больше 0.

Решение:

Обратитесь к разработчику приложения для анализа проблемы.

tnt_ev_loop_time

Продолжительность последней итерации цикла событий (поток TX) в миллисекундах.

Порог срабатывания: значение больше 1 секунды. Большое значение метрики может быть причиной ошибки Too long WAL write.

Решение:

Обратитесь к разработчику приложения для анализа проблемы.

Статистика распределения слабов

Распределение слабов (slab allocator) – это ключевой механизм хранения кортежей в Tarantool. Статистика распределения слабов отражает использование выделенной оперативной памяти в процентах. Чтобы узнать больше о вариантах использования распределения слабов, обратитесь к документации модуля box.slab.

Полезные метрики:

  • tnt_slab_quota_used_ratio – соотношение занятого объема памяти (tnt_slab_quota_used) к максимальному объему памяти, который можно выделить для слабов (tnt_slab_quota_size);

  • tnt_slab_arena_used_ratio – соотношение занятого объема памяти (tnt_slab_arena_used) к максимальному объему памяти, который можно выделить для кортежей и индексов (tnt_slab_quota_size);

  • tnt_slab_items_used_ratio – соотношение занятого объема памяти (tnt_slab_items_used) к максимальному объему памяти, который можно выделить для кортежей (tnt_slab_items_size).

Узнать подробнее о метриках, связанных с распределением слабов, можно в разделе Статистика использования памяти для распределения слабов.

Отслеживание статистики распределения слабов позволяет увидеть объем свободной оперативной памяти для хранения memtx кортежей и индексов на экземпляре. Если Tarantool превышает ограничения, экземпляр становится недоступен для записи. Оповещение может помочь понять, когда пора увеличить лимит box.cfg.memtx_memory или добавить новое хранилище в кластер vshard.

Порог срабатывания:

  • (tnt_slab_quota_used_ratio >= 80) и (tnt_slab_arena_used_ratio >= 80) – у экземпляра заканчивается выделенный объем оперативной памяти;

  • (tnt_slab_quota_used_ratio >= 90) и (tnt_slab_arena_used_ratio >= 90) – у экземпляра закончился выделенный объем оперативной памяти.

Решение:

Увеличьте лимит памяти Tarantool box.cfg.memtx_memory.

Порог срабатывания:

  • (tnt_slab_quota_used_ratio >= 80) и (tnt_slab_items_used_ratio <= 85) – у экземпляра заканчивается выделенный объем оперативной памяти. Возможна большая фрагментация данных;

  • (tnt_slab_quota_used_ratio >= 90) и (tnt_slab_items_used_ratio <= 85) – у экземпляра закончился выделенный объем оперативной памяти. Возможна большая фрагментация данных.

Решение:

Чтобы избавиться от фрагментации, выполните перезагрузку экземпляра. Если после перезагрузки значения метрик не изменились, рассмотрите возможность увеличения лимита памяти Tarantool box.cfg.memtx_memory.

Информация о файберах

Рекомендуемые и критические значения для метрик ниже определяются исходя из конкретного проекта. Узнать подробнее о метриках, связанных с файберами, можно в разделе Информация о файберах.

  • tnt_fiber_csw – количество контекстных переключений для всех текущих файберов экземпляра;

  • tnt_fiber_amount – текущее количество файберов в потоке процессора транзакций (потоке TX). Скорость работы снижается, если количество файберов приближается к 10000. Большое значение tnt_fiber_amount отразится на значениях метрик tnt_fiber_csw и tnt_ev_loop_time;

  • tnt_fiber_memused – объем памяти в байтах, используемый файберами;

  • tnt_fiber_memalloc – общий объем памяти в байтах, выделенный под файберы.

Решение:

Обратитесь к разработчику приложения для анализа проблемы.

Статистика сетевой активности

Рекомендуемые и критические значения для метрик ниже определяются исходя из конкретного проекта. Узнать подробнее о метриках, связанных с работой сети, можно в разделе Статистика сетевой активности.

  • tnt_info_memory_net – объем памяти в байтах, используемый для буферов сетевого ввода и вывода. Может быть ограничен параметром конфигурации readahead;

  • tnt_net_sent_total – исходящий трафик в байтах;

  • tnt_net_received_total – входящий трафик в байтах;

  • tnt_net_requests_in_progress_total – общее количество сетевых запросов, обработанных потоком процессора транзакций (поток TX);

  • tnt_net_requests_in_progress_current – количество сетевых запросов, которые обрабатывает поток процессора транзакций в текущий момент;

  • tnt_net_requests_in_stream_queue_total – общее количество сетевых запросов, помещенных в очереди стримов за все время потоком процессора транзакций.

tnt_net_requests_total

Общее количество входящих сетевых запросов, обработанных с момента запуска экземпляра.

Решение:

При возникновении проблем проверьте сетевую доступность экземпляров Tarantool и наличие нагрузки с внешних сервисов.

tnt_net_requests_current

Текущее количество входящих сетевых запросов в обработке. Может быть ограничено параметром конфигурации базы данных net_msg_max.

Решение:

Если количество сетевых запросов достигло лимита, заданного в параметре net_msg_max (по умолчанию 768), увеличьте значение этого параметра. Если Tarantool не успевает обрабатывать поступающие запросы, необходимо провести анализ поступающей нагрузки.

tnt_net_requests_in_stream_queue_current

Количество сетевых запросов, ожидающих обработки в очередях стримов в текущий момент.

Решение:

  • Проверьте скорость работы жесткого диска при помощи системных утилит.

  • Проведите анализ потока процессора транзакций, используя функцию fiber.top().

tnt_net_connections_total

Общее количество входящих сетевых соединений с момента запуска экземпляра.

Решение:

Проверьте профиль нагрузки в функции box.stat.net().

tnt_net_connections_current

Текущее количество входящих сетевых соединений.

Решение:

Проверьте профиль нагрузки в функции box.stat.net().

Found what you were looking for?
Feedback