Рекомендации по анализу метрик¶
При мониторинге системы рекомендуется в первую очередь обращать внимание на следующие группы метрик:
Note
Рекомендуемые и критические значения для большинства метрик из списка ниже рассчитываются на основе статистических данных промышленной эксплуатации или предварительной статистики, собранной на стенде нагрузочного тестирования. Для получения помощи в настройке таких метрик обратитесь к команде поддержки.
Статистика использования 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
.
Решение:
Возникла проблема с приложением. Определите экземпляр, на котором возникла проблема, проверьте файлы логов.