/domain/<DOMAIN>/trace/properties/ - команды настройки подсистемы трассировки вызовов
Настройка трассировки
Чтобы избежать проблем с расходованием памяти, необходимо периодически удалять старые трассировки вызовов. Существует два механизма удаления старых трассировок:
- 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 - Описание общих свойств подсистемы трассировки вызовов
Название | Значение по умолчанию | Описание |
---|---|---|
backend | ets | Устройство хранения трассировки. ETS - оперативная память, DETS - жесткий диск |
cleanup_time | 02:15 | Время подчистки устаревших трассировок |
description_clean_lifetime | 60000 | Таймаут подчистки списка файлов, мс |
description_clean_timeout | 60000 | Интервал подчистки списка файлов, мс |
dets_autoclose_timeout | 15000 | Таймаут автозакрытия dets файла, если он не изменялся, мс |
lifetime | 7 | Время хранения трассировок на жестком диске. Задается в днях |
critical_max_events | 100000 | Максимальное количество сообщений в одном хранилище трассировок. |
max_trace_count | 1000 | максимальное количество трассировок вызовов в одном хранилище трассировок. |
mode | disabled | Режим трассировки для вызовов. |
suspend_time | 2000 | Период обновления данных в хранилище трассировок, задается в миллисекундах. |
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]