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

Версия:

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

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

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

Примечание

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

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

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

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

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

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

  • tnt_slab_quota_used_ratio – соотношение занятого объема памяти (tnt_slab_quota_used) к максимальному объему памяти, который можно выделить для slab (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).

Отслеживание статистики распределения slab позволяет увидеть объем свободной оперативной памяти для хранения 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().

Cartridge issues

tnt_cartridge_issues

Количество ошибок в работе экземпляра кластера. Срабатывает, когда возникает хотя бы одна ошибка:

  • в работе отдельного экземпляра кластера или набора реплик;

  • в работе кластера Cartridge.

Имеет два уровня критичности ошибок:

  • warning. Возможные причины: большой лаг или длительный простой репликации, проблемы с восстановлением после сбоев (failover) и переключением (switchover), проблемы со временем, фрагментация памяти, ошибки конфигурации, предупреждение о посторонних экземплярах в кластере;

  • critical. Возможные причины: критические сбои процесса репликации, нехватка доступной памяти.

Решение

При возникновении таких предупреждений обратите внимание на наличие ошибок в веб-интерфейсе Cartridge.

Статистика HTTP-запросов

В TDG доступен мониторинг статистики HTTP-сервера, в том числе отслеживание задержки HTTP-запросов.

http_server_request_latency

Задержка HTTP-запросов.

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

  • среднее время обработки запроса с ошибкой 4xx (зависит от проекта);

  • среднее время обработки запроса с ошибкой 5xx (зависит от проекта);

Решение:

Повышение значения метрики означает, что кластер не успевает обрабатывать поступающие изменения. Возможные причины:

  • возросшая нагрузка;

  • изменение кода;

  • проблемы с аппаратным обеспечением – например, появился новый потребитель ресурсов; диски работают медленно.

http_server_request_latency_count

Количество обработанных HTTP-запросов. Большое количество ответов с ошибками говорит о проблемах с API или неисправности приложения.

Порог срабатывания: зависит от проекта. Как правило, это больше 20 запросов, обработанных на стороне Tarantool с ошибкой 4xx.

Решение:

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

Порог срабатывания: зависит от проекта. Как правило, это больше 1 запроса, обработанного на стороне Tarantool с ошибкой 5xx.

Решение:

Возникла проблема с приложением. Определите экземпляр, на котором возникла проблема, проверьте файлы логов.

Нашли ответ на свой вопрос?
Обратная связь