/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@[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]