Рекомендации по анализу метрик
При мониторинге системы рекомендуется в первую очередь обращать внимание на следующие группы метрик:
Рекомендуемые и критические значения для метрик ниже определяются исходя из конкретного проекта. Узнать подробнее о метриках, связанных с использованием процессора, можно в разделе Статистика CPU.
Среднее время использования CPU в секундах, затраченное процессом экземпляра на исполнение логики базы данных. Срабатывает при высокой нагрузке на заданном сервере.
Решение
Определите место в коде приложения, которое вызывает всплеск нагрузки на CPU. Постоянно высокая загрузка CPU может говорить о нехватке вычислительных мощностей.
Среднее время использования CPU в секундах, затраченное процессом экземпляра на исполнение системного вызова.
Решение
Большое значение метрики указывает на проблему в одной из подсистем.
Одна из причин проблемы - выросшее значение параметра iowait(), в
этой ситуации приложение тратит много ресурсов на чтение или запись на
диск.
Рекомендуемые и критические значения для метрик ниже определяются исходя из конкретного проекта, если не указано иначе.
Объем памяти в байтах, используемый средой выполнения Lua-кода. Объем памяти Lua ограничен 2 Гб на каждый экземпляр (более 2 Гб на версиях GC64). Отслеживание метрики помогает предотвратить переполнение памяти и выявить некорректные методы работы с Lua-кодом. Рекомендуемое значение метрики: 25-100 МБ.
Порог срабатывания: значение больше 1 Гб (за исключением версий GC64).
Решение
Одна из причин большой загруженности памяти - утечка памяти. Чтобы выяснить точную причину, вызовите функцию fiber.top(). Перезагрузите экземпляр после того, как определите причину проблемы.
Объем памяти в байтах, используемый средой выполнения Lua-кода (runtime arena) в данный момент. Среда выполнения хранит:
- сетевые буферы;
- кортежи, созданные с помощью box.tuple.new();
- другие объекты, выделенные приложением, которые не охватывают базовые механизмы Lua.
Отслеживание метрики помогает предотвратить переполнение памяти и выявить некорректные методы работы с Lua-кодом. Рекомендуемое значение метрики близко к 0.
Порог срабатывания: значение заметно больше 0.
Решение
Обратитесь к разработчику приложения для анализа проблемы.
Объем памяти в байтах, используемый активными транзакциями. Для движка vinyl это общий размер всех выделенных объектов и кортежей, закрепленных для этих объектов. Рекомендуемое значение метрики близко к 0.
Порог срабатывания: значение заметно больше 0.
Решение
Обратитесь к разработчику приложения для анализа проблемы.
Продолжительность последней итерации цикла событий (поток TX) в миллисекундах.
Порог срабатывания: значение больше 1 секунды. Большое значение
метрики может быть причиной ошибки Too long WAL write.
Решение
Обратитесь к разработчику приложения для анализа проблемы.
Использование выделенной оперативной памяти в процентах. Узнать подробнее о метриках, связанных с распределением 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- общее количество сетевых запросов, помещенных в очереди стримов за все время потоком процессора транзакций.
Общее количество входящих сетевых запросов, обработанных с момента запуска экземпляра.
Решение
При возникновении проблем проверьте сетевую доступность экземпляров Tarantool и наличие нагрузки с внешних сервисов.
Текущее количество входящих сетевых запросов в обработке. Может быть ограничено параметром конфигурации базы данных net_msg_max.
Решение
Если количество сетевых запросов достигло лимита, заданного в параметре
net_msg_max (по умолчанию 768), увеличьте значение этого параметра.
Если Tarantool не успевает обрабатывать поступающие запросы, необходимо
провести анализ поступающей нагрузки.
Количество сетевых запросов, ожидающих обработки в очередях стримов в текущий момент.
Решение
- Проверьте скорость работы жесткого диска при помощи системных утилит.
- Проведите анализ потока процессора транзакций, используя функцию fiber.top().
Общее количество входящих сетевых соединений с момента запуска экземпляра.
Решение
Проверьте профиль нагрузки в функции `box.stat.net() <community:reference/reference_lua/box_stat/net).
Текущее количество входящих сетевых соединений.
Решение
Проверьте профиль нагрузки в функции box.stat.net().
Количество ошибок в работе экземпляра кластера. Срабатывает, когда возникает хотя бы одна ошибка:
- в работе отдельного экземпляра кластера или набора реплик;
- в работе кластера Cartridge.
Имеет два уровня критичности ошибок:
warning. Возможные причины: большой лаг или длительный простой репликации, проблемы с восстановлением после сбоев (failover) и переключением (switchover), проблемы со временем, фрагментация памяти, ошибки конфигурации, предупреждение о посторонних экземплярах в кластере;critical. Возможные причины: критические сбои процесса репликации, нехватка доступной памяти.
Решение
При возникновении таких предупреждений обратите внимание на наличие ошибок в веб-интерфейсе Cartridge.
В TDG доступен мониторинг статистики HTTP-сервера, в том числе отслеживание задержки HTTP-запросов.
Задержка HTTP-запросов.
Порог срабатывания:
- среднее время обработки запроса с ошибкой
4xx(зависит от проекта); - среднее время обработки запроса с ошибкой
5xx(зависит от проекта);
Решение:
Повышение значения метрики означает, что кластер не успевает обрабатывать поступающие изменения. Возможные причины:
- возросшая нагрузка;
- изменение кода;
- проблемы с аппаратным обеспечением - например, появился новый потребитель ресурсов; диски работают медленно.
Количество обработанных HTTP-запросов. Большое количество ответов с ошибками говорит о проблемах с API или неисправности приложения.
Порог срабатывания: зависит от проекта. Как правило, это больше 20
запросов, обработанных на стороне Tarantool с ошибкой 4xx.
Решение:
Проверьте работоспособность экземпляров и их сетевую доступность.
Порог срабатывания: зависит от проекта. Как правило, это больше 1
запроса, обработанного на стороне Tarantool с ошибкой 5xx.
Решение:
Возникла проблема с приложением. Определите экземпляр, на котором возникла проблема, проверьте файлы логов.