Лимиты
Лимиты предназначены для ограничения ресурсов, которые могут использовать пользователи для своих запросов.
Метрики лимитирования
Лимиты для запросов настраиваются отдельно для пользователей и ролей. Лимиты на команды настраиваются в глобальных настройках (_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_qsize | 500 |
allowed_commands | source stats eval |
Так же, у этого пользователя имеется роль developer
и user
. Лимиты для роли developer
:
Название | Значение |
---|---|
max_search_running_time | 500 |
allowed_commands | source streamstats eventstats |
Лимиты для роли user
:
Название | Значение |
---|---|
max_qsize | 1000 |
allowed_dt_start | now-3w |
После соединения всех видов лимитов получится следующая конфигурация:
Название | Значение | Вид лимита |
---|---|---|
max_qsize | 500 | Персональный |
allowed_dt_start | now-3w | Персональный |
max_search_running_time | 500 | Из роли developer |
allowed_commands | source stats eval streamstats eventstats | Совокупность персонального лимита и роли developer |
allowed_dt_end | По умолчанию | Базовый |
max_payload_row_count | По умолчанию | Базовый |
max_payload_size | По умолчанию | Базовый |
max_command_ram_usage | По умолчанию | Базовый |