Лимиты
Лимиты предназначены для ограничения ресурсов, которые могут использовать пользователи для своих запросов.
Метрики лимитирования
Лимиты для запросов настраиваются отдельно для пользователей и ролей. Лимиты на команды настраиваются в глобальных настройках (_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 | sourcestatseval |
Так же, у этого пользователя имеется роль developer и user. Лимиты для роли developer:
| Название | Значение |
|---|---|
max_search_running_time | 500 |
allowed_commands | sourcestreamstatseventstats |
Лимиты для роли 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 | sourcestatsevalstreamstatseventstats | Совокупность персонального лимита и роли developer |
allowed_dt_end | По умолчанию | Базовый |
max_payload_row_count | По умолчанию | Базовый |
max_payload_size | По умолчанию | Базовый |
max_command_ram_usage | По умолчанию | Базовый |