Перейти к основному содержимому
Версия: 4.2

Лимиты

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

Метрики лимитирования

к сведению

Лимиты для запросов настраиваются отдельно для пользователей и ролей. Лимиты на команды настраиваются в глобальных настройках (_cluster/settings).

Лимиты при старте запроса

  • Допустимый временной интервал:allowed_dt_start и allowed_dt_end
  • Список доступных команд: allowed_commands
  • Количество запрашиваемых данных: max_qsize

Лимиты во время выполнения запроса

  • Количество документов payload: max_payload_row_count
  • Размер payload в байтах: max_payload_size
  • Количество памяти, выделенной на поток в байтах: max_thread_ram_usage
  • Максимальное время выполнения запроса в секундах: max_search_running_time

Лимиты на отдельные команды

  • Количество документов, возвращаемых подзапросами
  • Количество обрабатываемых значений функцией list команды stats
  • Количество документов, сортируемых командой sort

Системные настройки лимитов

Настройки лимитов хранятся в _cluster/settings в словаре sme.core. Ниже представлена таблица с настройками лимитов и их значениями по умолчанию.

НазваниеОписаниеЗначение по умолчанию
enable_limitsВключение/отключение лимитирования.true
check_base_limitСоздает индекс с лимитами, если он отсутствует. Создает базовый лимит, если он отсутствует в индексе с лимитами.true
limits.index_nameНазвание индекса, в котором хранятся лимиты..sm_sme_limits_user
max_subsearch_hits_countМаксимальное количество документов, возвращаемых подзапросом.50000
list_limitМаксимальное количество возвращаемых значений функцией list команды stats.100
sort_limitМаксимальное количество документов, сортируемое командой sort.10000

Настройка пользовательских и ролевых лимитов

Порядок проверки лимитов для пользователя

Проверка каждого лимита пользователя проходит последовательно. Сначала проверяется его собственный лимит. Если он не указан, проверяется лимит у ролей, которые имеет пользователь. Если у нескольких ролей указан данный лимит, выбирается лучший. Если у ролей пользователя также не указан лимит, используется базовый лимит.

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

Пример настройки

Пользователю назначены следующие лимиты:

НазваниеЗначение
max_qsize500
allowed_commandssource
stats
eval

Так же, у этого пользователя имеется роль developer и user. Лимиты для роли developer:

НазваниеЗначение
max_search_running_time500
allowed_commandssource
streamstats
eventstats

Лимиты для роли user:

НазваниеЗначение
max_qsize1000
allowed_dt_startnow-3w

После соединения всех видов лимитов получится следующая конфигурация:

НазваниеЗначениеВид лимита
max_qsize500Персональный
allowed_dt_startnow-3wПерсональный
max_search_running_time500Из роли developer
allowed_commandssource
stats
eval
streamstats
eventstats
Совокупность персонального лимита и роли developer
allowed_dt_endПо умолчаниюБазовый
max_payload_row_countПо умолчаниюБазовый
max_payload_sizeПо умолчаниюБазовый
max_command_ram_usageПо умолчаниюБазовый