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

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

  • 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@mycelium1@ecss1:/$ domain/biysk.local/trace/properties/clean cleanup_time 
Property cleanup_time values successfully restored

[exec at: 01.03.2021 22:41:38, exec time: 81ms, nodes: core1@ecss1 v.3.14.7.620]

info

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

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

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

Синтаксис:

info [<FIELD>]

Параметры:

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

Пример:

admin@mycelium1@ecss1:/$ domain/biysk.local/timers/core/info         
┌──────────────────────────────────────┬───────────┬──────┐
│               Property               │  Domain   │Value │
├──────────────────────────────────────┼───────────┼──────┤
│abonent_manager_statistic_boom_timeout│biysk.local│5m    │
│cc_queue_remember_choice_timeout      │biysk.local│1h    │
│conversation_timeout                  │biysk.local│1h    │
│no_answer_timeout                     │biysk.local│1m    │
│release_ack_timeout                   │biysk.local│5s    │
│response_ack_timeout                  │biysk.local│6s    │
│response_timeout                      │biysk.local│25s   │
│router_resp_timeout                   │biysk.local│5s    │
│suspend_timeout_t2                    │biysk.local│3m    │
│suspend_timeout_t38                   │biysk.local│1m 30s│
│suspend_timeout_t6                    │biysk.local│1m    │
│teleconference_pin_timeout            │biysk.local│30s   │
│trunk_manager_cache_timeout           │biysk.local│1m    │
│tts_availability_check_timeout        │biysk.local│2m    │
│voicemail_read_message_cleanup_timeout│biysk.local│1d    │
└──────────────────────────────────────┴───────────┴──────┘

[exec at: 01.03.2021 22:33:43, exec time: 29ms, nodes: core1@ecss1 v.3.14.7.620]

set

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

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

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

Синтаксис:

set <FIELD> <VALUE>

Параметры:

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

Пример:

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

[exec at: 01.03.2021 22:40:32, exec time: 109ms, nodes: core1@ecss1 v.3.14.7.620]