Справочник по конфигурации | Tdb
Справочник Справочник по конфигурации

Справочник по конфигурации

В этом разделе описаны опции конфигурации, представленные в Tarantool DB.

app.roles.slow_log

Секция app.roles.slow_log задает опции конфигурации журнала медленных запросов.

Пример

roles_cfg:
  app.roles.slow_log:
    enable: true
    threshold: 3
    namespaces:
      - app

app.roles.slow_log.enable

Включить запись в журнал медленных запросов. По умолчанию запись будет включена для запросов через модуль CRUD.

Тип: boolean

Значение по умолчанию: false

app.roles.slow_log.threshold

Максимальное время выполнения запроса в секундах. При превышении этого значения запрос считается медленным и записывается в журнал.

Тип: number

Значение по умолчанию: 0.5

app.roles.slow_log.namespaces

Задать функции, для которых будет включено логирование медленных запросов.

Тип: table

Значение по умолчанию: {}

app.roles.tracing

Секция app.roles.tracing задает опции конфигурации трассировки.

Пример

roles_cfg:
  app.roles.tracing:
    enabled: true
    global_sample_rate: 0
    sample_rates:
      get_token_api: 2
      debug_1: 1
    base_url: 'http://tracing:9411/api/v2/spans'
    api_method: 'POST'
    report_interval: 1
    spans_limit: 1000

app.roles.tracing.enabled

Включить трассировку.

Тип: boolean

Значение по умолчанию: false

app.roles.tracing.global_sample_rate

Глобальный коэффициент частоты трассировки – трассируется каждый N-й вызов функции. Примеры:

10 – трассируется каждый десятый запрос; 1 – трассируются все запросы; 0 – все запросы не трассируются.

Примечание

Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду. Например, при нагрузке 1000 RPS, если функция start_span() вызывается при каждом обращении к базе, установите значение global_sample_rate = 1000.

Тип: integer

Значение по умолчанию: 0

app.roles.tracing.sample_rates

Коэффициенты частоты трассировки для заданных сегментов (spans). Значение опции – это таблица из пар ключ-значение, где

  • ключ – название сегмента;

  • значение – частота трассировки для этого сегмента.

Примечание

Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду. Например, при нагрузке 1000 RPS у конкретной функции, в которой вызывается функция start_span() с названием get_user(), установите в tracing.sample_rates ключ-значение {get_user: 1000}.

Тип: table

Значение по умолчанию: „{}“

Пример:

  sample_rates:
    get_user: 1000
    get_token: 10000

app.roles.tracing.base_url

URL-адрес сервера трассировки, куда отправляются данные трассировки.

Тип: string

Значение по умолчанию: „http://127.0.0.1:9411/api/v2/spans“

app.roles.tracing.api_method

HTTP-метод, используемый для отправки данных трассировки на сервер. Возможные значения: POST, GET, PUT.

Тип: string

Значение по умолчанию: „POST“

app.roles.tracing.report_interval

Интервал в секундах между отправкой на сервер собранных данных о трассировке.

Тип: integer

Значение по умолчанию: 10

app.roles.tracing.spans_limit

Максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.

Тип: integer

Значение по умолчанию: 1000

roles.tcf-<worker_or_coordinator>

Секция задает опции конфигурации для технологических ролей roles.tcf-worker и roles.tcf-coordinator. Опции определяют настройки кластеров, необходимые для взаимодействия с модулем Tarantool Clusters Federation (TCF). Полный список опций приведен в документации TCF. Задать конфигурацию кластера можно как через yaml-файл, так и в веб-интерфейсе Tarantool DB на вкладке TCF.

Узнать больше про технологические роли, связанные с TCF: roles.tcf-worker, roles.tcf-coordinator.

config.storage

Секция config.storage определяет опции конфигурации узла как части централизованного хранилища конфигураций. Узнать больше: Запуск кластера Tarantool DB как централизованного хранилища конфигураций.

Пример

roles_cfg:
  config.storage:
    status_check_interval: 3

config.storage.status_check_interval

Интервал в секундах между проверками состояния сервера в кластере.

Тип: number

Значение по умолчанию: 5

roles.crud-<router_or_storage>

Секция задает опции конфигурации для технологических ролей roles.crud-router и roles.crud-storage. Опции используются для настройки сбора метрик модуля CRUD.

Узнать больше про роли, связанные с crud: roles.crud-router, roles.crud-storage.

Пример

roles_cfg:
  roles.metrics-export:
    http:
    - endpoints:
      - format: prometheus
        path: /metrics
      listen: 8081

groups:
  routers:
    replication:
      failover: manual
    sharding:
      roles: [router]
    roles:
      - roles.crud-router
      - roles.metrics-export
      - roles.dictionary-router
    roles_cfg:
      roles.crud-router:
        stats: true
        stats_driver: metrics
        stats_quantiles: true
        stats_quantile_tolerated_error: 0.001
        stats_quantile_age_buckets_count: 5
        stats_quantile_max_age_time: 180

roles.crud-<router_or_storage>.stats

Включить сбор метрик модуля CRUD.

По умолчанию сбор метрик отключен, так как их работа снижает производительность:

  • на 3-10% – при использовании локального драйвера;

  • 5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию;

  • до 20% – при использовании метрик, которые содержат квантили.

Тип: boolean

Значение по умолчанию: false

roles.crud-<router_or_storage>.stats_driver

Задать драйвер для хранения собранных метрик CRUD. Возможные значения:

  • local – использовать локальный драйвер;

  • metrics– использовать драйвер метрик.

Тип: string

Значение по умолчанию: „metrics“

Примечание

Включенный сбор метрик CRUD снижает производительность:

  • на 3-10% – при использовании локального драйвера;

  • 5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию.

roles.crud-<router_or_storage>.stats_quantiles

Включить квантили метрик. Опция crud.stats_quantiles работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Примечание

Вычисление квантилей снижает производительность на величину до 10%.

Тип: boolean

Значение по умолчанию: false

roles.crud-<router_or_storage>.stats_quantile_age_buckets_count

Количество сегментов квантилей summary. Увеличение значения сглаживает скользящее окно, но потребляет дополнительную память и CPU. Опция crud.stats_quantile_age_buckets_count работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Тип: number

Значение по умолчанию: 2

roles.crud-<router_or_storage>.stats_quantile_max_age_time

Время жизни сегмента (bucket) в секундах. Опция crud.stats_quantile_max_age_time работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Меньший срок жизни сегмента приводит к меньшему временному окну для квантилей, при этом больше ресурсов CPU используется на ротацию сегментов. Если у вашего приложения низкая частота запросов, увеличьте значение, чтобы уменьшить количество пробелов -nan в значениях квантилей.

Узнать больше про опцию crud.stats_quantile_max_age_time можно в документации Tarantool в разделе Мониторинг.

Тип: number

Значение по умолчанию: 60

roles.crud-<router_or_storage>.stats_quantile_tolerated_error

Задать допустимую погрешность квантиля. Опция stats_quantile_tolerated_error работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').

Узнать больше про опцию crud.stats_quantile_tolerated_error можно в документации Tarantool в разделе Мониторинг.

Тип: number

Значение по умолчанию: 0.001

roles.dictionary-<router_or_storage>

Секция задает опции конфигурации для технологических ролей roles.dictionary-router и roles.dictionary-storage. Опции используются для настройки работы словарей.

Пример

roles_cfg:
  roles.dictionary-router:
    update_instances_list_period: 300
  roles.dictionary-storage:
    batch_size: 1000
    worker_sleep_in_second: 60
    update_instances_list_period: 300
    connect_timeout: 3

roles.dictionary-<router_or_storage>.batch_size

Размер пакета для обмена между узлами в байтах.

Тип: number

Значение по умолчанию: 400

roles.dictionary-<router_or_storage>.worker_sleep_in_second

Интервал в секундах между опросами соседнего экземпляра на наличие новых данных.

Тип: number

Значение по умолчанию: 3

roles.dictionary-<router_or_storage>.update_instances_list_period

Доступно с версии 2.0.0.

Частота обновления списка узлов в секундах. Модуль хранит список узлов и отслеживает нездоровые узлы. При обнаружении нездорового узла модуль прекращает попытки связаться с ним до следующего обновления списка. Опция также позволяет отслеживать появление новых узлов в кластере.

Тип: number

Значение по умолчанию: 60

roles.dictionary-<router_or_storage>.connect_timeout

Доступно с версии 2.0.0.

Время ожидания установки соединения в секундах.

Тип: number

Значение по умолчанию: Неограниченно

roles.expirationd

Секция roles.expirationd задает опции конфигурации устаревания данных.

roles.expirationd.<name>

Название задачи по устареванию данных. Обязательный параметр.

Тип: string

Примеры конфигурации

Без пользовательской логики

roles_cfg:
  roles.expirationd:
    task_name1:
      space: messages
      options:
        args:
          lifetime_in_seconds: 15
          time_create_field: dt

Здесь:

  • task_name1 – название задачи по устареванию данных;

    • space – название спейса, по которому идет поиск устаревших кортежей;

    • options.args – дополнительные опции конфигурации:

      • lifetime_in_seconds – время жизни кортежа в секундах;

      • time_create_field – название поля, по которому проверяется время жизни кортежа.

Узнать больше: Автоматическое удаление устаревших кортежей из спейса.

С пользовательской логикой

roles_cfg:
  roles.expirationd:
    messages_expiration:
      space: messages
      is_expired: messages_is_tuple_expired
      is_master_only: true
      options:
        tuples_per_iteration: 100
        iterate_with: messages_iterate_with
        process_expired_tuple: messages_process_expired_tuple
        args:
          seconds: 5

Здесь:

  • messages_expiration – название задачи по устареванию данных;

    • space – название спейса, по которому идет поиск устаревших кортежей;

    • is_expired – название функции, которая получает кортеж и проверяет его срок жизни;

    • is_master_only – экспирация запущена только на master-узлах;

    • options – дополнительные опции конфигурации:

      • tuples_per_iteration – количество кортежей, которое проверяется за одну итерацию;

      • iterate_with – название функции, которая получает и обрабатывает устаревшие кортежи;

      • process_expired_tuple – название функции, возвращающей итератор для обхода спейса;

      • args – аргументы, доступные в функциях message_iterate_with и message_process_expired_tuple, seconds – время жизни кортежа. А также для поиска устаревших данных по умолчанию. В этом случае используются следующие поля:

        • lifetime_in_seconds - время жизни кортежа в секундах;

        • time_create_field - поле «время создания» для оценки времени жизни.

Узнать больше: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.

roles.expirationd.<name>.is_expired

Название функции, которая получает кортеж и проверяет его срок жизни. Функция возвращает true, если время жизни кортежа истекло. Обязательный параметр.

Тип: function

roles.expirationd.<name>.is_master_only

Запустить работу с устаревающими кортежами только на master-узлах.

Тип: boolean

Значение по умолчанию: false

roles.expirationd.<name>.space

Название спейса или идентификатор спейса, по которому идет поиск устаревших кортежей. Обязательный параметр.

Тип: string или number

roles.expirationd.<name>.options

Дополнительные опции конфигурации.

Тип: table

Значение по умолчанию: {}

roles.expirationd.<name>.options.args

Дополнительные аргументы конфигурации. Доступные аргументы:

Тип time_create_field

Текущее время

число

clock.time()

целое число

clock.time()

беззнаковое

clock.time()

datetime

datetime.now()

Тип: table

Значение по умолчанию: {}

roles.expirationd.<name>.options.iterate_with

Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().

Тип: function

roles.expirationd.<name>.options.process_expired_tuple

Название функции, которая получает и обрабатывает устаревшие кортежи. Если опция не указана (или указан nil), устаревшие кортежи удаляются.

Тип: function

roles.expirationd.<name>.options.tuples_per_iteration

Количество кортежей, которое проверяется за одну итерацию. В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.

Тип: number

Значение по умолчанию: 1024

Нашли ответ на свой вопрос?
Обратная связь