Настройка трассировки

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

  • max_trace_count - максимальное количество трассировок вызовов в одном хранилище трассировок. При превышении данного количества удаляются наиболее старые трассировки. Это нормальный способ удаления старых трейсов.
  • critical_max_events - максимальное количество сообщений в одном хранилище трассировок. При достижении количеством сообщений значения, равного critical_max_events, все трассировки в данном хранилище будут удалены. После трассировка продолжиться в обычном режиме. Это аварийный способ подчистки старых трейсов.
  • lifetime - Время жизни файлов трассировок. Распространяется только на режим записи трассировок DETS.

Значение параметра max_trace_count необходимо выбирать в зависимости от того, какое количество вызовов мы хотим сохранить. Так как этот параметр определяет не общее количество трассировок в системе, а по отдельности в каждом хранилище трассировок, максимальное количество хранимых вызовов будет равняться max_trace_count * N, где N - количество хранилищ.

Допустим количество вызовов, к которым мы хотим гарантированно иметь доступ - 1000, а количество хранилищ трассировок - 4. Если мы укажем max_trace_count равным 250, это будет ошибкой, так как вызовы могут распределяться по хранилищам неравномерно, и часть более новых вызовов могут быть вытеснены из одного из хранилищ. Поэтому нет точного способа подсчета значения max_trace_count в системе целиком, исходя из желаемого количества хранимых трассировок и количества хранилищ. В рамках данной задачи можно просто установить значение max_trace_count равным 1000.

Количество сообщений в рамках одной трассировки чаще всего не превышает 2000. То есть в качестве значения critical_max_events подойдет max_trace_count * 2000. Если выбрать это значение слишком маленьким, то можно периодически терять часть трассировок, независимо от того новые они или старые. В случае, если такая ошибка происходит, нужно увеличить значение critical_max_events.

Непосредственно проверкой хранилищ трассировок и удалением старых трассировок занимается менеджер трассировок. Частота с которой он будет проверять таблицы трассировок определяется параметром suspend_time - время в миллисекундах, которое менеджер будет ждать перед следующей проверкой.

Режимы трассировки

Существует четыре режима трассировки, которые задаются с помощью параметра mode:

  • compressed - трассировка с использованием сжатия. Уменьшает расход памяти, но снижает производительность.
  • raw - данные трассировки сохраняются в сыром виде. Несколько увеличивает расход памяти, но не снижает производительность.
  • full_compressed - аналогично режиму compressed, отличие в том, что трассировка содержит подробные данные.
  • full_raw - аналогично режиму raw, отличие в том, что трассировка содержит подробные данные.

Значение параметра mode = disabled означает что трассировка выключена.

Таблица 1 - Описание общих свойств подсистемы трассировки вызовов

НазваниеЗначение по умолчаниюОписание
backendetsУстройство хранения трассировки. ETS - оперативная память, DETS - жесткий диск
cleanup_time02:15Время подчистки устаревших трассировок
description_clean_lifetime60000Таймаут подчистки списка файлов, мс
description_clean_timeout60000Интервал подчистки списка файлов, мс
dets_autoclose_timeout15000Таймаут автозакрытия dets файла, если он не изменялся, мс
lifetime7Время хранения трассировок на жестком диске. Задается в днях
critical_max_events100000Максимальное количество сообщений в одном хранилище трассировок.
max_trace_count1000максимальное количество трассировок вызовов в одном хранилище трассировок.
modedisabledРежим трассировки для вызовов.
suspend_time2000Период обновления данных в хранилище трассировок, задается в миллисекундах.

clean

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

Путь команды:

/domain/<DOMAIN>/trace/properties/clean

Синтаксис:

clean [<FIELD>] [--force]

Параметры:

<FIELD> - свойство, значение которого будет установлено по умолчанию. Значения по умолчанию приведены в Таблице 1.

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

Пример:

admin@[ds1@ecss1]:/$ domain/biysk.local/trace/properties/clean mode 
Property mode values successfully restored

[exec at: 16.03.2019 14:50:22, exec time: 316ms, nodes: core1@ecss2]

info

Отображение значения указанного свойства или всех свойств.

Путь команды:

/domain/<DOMAIN>/trace/properties/info

Синтаксис:

info [<FIELD>]

Параметры:

<FIELD> - просматриваемое свойство. Описание свойств приведено в Таблице 1.

Пример:

admin@[ds1@ecss1]:/$ domain/biysk.local/trace/properties/info   
┌──────────────────────────┬───────────┬───────────────┐
│         Property         │  Domain   │     Value     │
├──────────────────────────┼───────────┼───────────────┤
│backend                   │biysk.local│dets           │
│cleanup_time              │biysk.local│02:15          │
│critical_max_events       │biysk.local│100000         │
│description_clean_lifetime│biysk.local│60000          │
│description_clean_timeout │biysk.local│60000          │
│dets_autoclose_timeout    │biysk.local│15000          │
│lifetime                  │biysk.local│7              │
│max_trace_count           │biysk.local│1000           │
│mode                      │biysk.local│full_compressed│
│suspend_time              │biysk.local│2000           │
└──────────────────────────┴───────────┴───────────────┘

[exec at: 16.03.2019 14:47:28, exec time: 128ms, nodes: core1@ecss2]

set

Устанавливает требуемое значение для указанного свойства.

Путь команды:

/domain/<DOMAIN>/trace/properties/set

Синтаксис:

set <FIELD> <VALUE>

Параметры:

<FIELD> - настраиваемое свойство, описание свойств приведено в Таблице 1.

Пример:

admin@[ds1@ecss1]:/$ domain/biysk.local/trace/properties/set cleanup_time add 12:00 
Property "cleanup_time" successfully changed from: 
02:15
   to
02:15
12:00.

[exec at: 16.03.2019 14:49:11, exec time: 312ms, nodes: core1@ecss1]