Настройка емкости в Azure Когнитивный поискAdjust capacity in Azure Cognitive Search

Перед подготовкой службы поиска и блокировки в определенной ценовой категории Потратьте несколько минут, чтобы понять роль реплик и секций в службе, а также настроить службу для обеспечения пиковых нагрузок и распределения ресурсов по требованию.Before provisioning a search service and locking in a specific pricing tier, take a few minutes to understand the role of replicas and partitions in a service and how you might adjust a service to accommodate spikes and dips in resource demand.

Емкость — это функция выбранного уровня (уровни определяют характеристики оборудования), а также сочетание реплик и разделов, необходимых для проектируемой рабочей нагрузки.Capacity is a function of the tier you choose (tiers determine hardware characteristics), and the replica and partition combination necessary for projected workloads. В зависимости от уровня и размера корректировки, добавление или уменьшение емкости может занять от 15 минут до нескольких часов.Depending on the tier and the size of the adjustment, adding or reducing capacity can take anywhere from 15 minutes to several hours.

При изменении распределения реплик и секций рекомендуется использовать портал Azure.When modifying the allocation of replicas and partitions, we recommend using the Azure portal. Портал применяет ограничения для допустимых сочетаний, которые остаются ниже максимальных пределов уровня.The portal enforces limits on allowable combinations that stay below maximum limits of a tier. Однако если требуется подход к подготовке на основе сценариев или кода, Azure PowerShell или REST API управления являются альтернативными решениями.However, if you require a script-based or code-based provisioning approach, the Azure PowerShell or the Management REST API are alternative solutions.

Терминология: реплики и секцииTerminology: replicas and partitions

СекцииPartitions Служат для хранения индексов и ввода-вывода данных для операций чтения и записи (например, при повторном создании или обновлении индексов).Provides index storage and I/O for read/write operations (for example, when rebuilding or refreshing an index). Каждая секция имеет общую папку с индексом Total.Each partition has a share of the total index. При выделении трех секций индекс делится на сторонние.If you allocate three partitions, your index is divided into thirds.
РепликиReplicas Экземпляры службы поиска, используемые главным образом для распределения операций запросов.Instances of the search service, used primarily to load balance query operations. Каждая реплика является одной копией индекса.Each replica is one copy of an index. При выделении трех реплик вы получите три копии индекса, доступные для обслуживания запросов запросов.If you allocate three replicas, you'll have three copies of an index available for servicing query requests.

Когда следует добавлять узлыWhen to add nodes

Изначально служба выделяет минимальный уровень ресурсов, состоящий из одной секции и одной реплики.Initially, a service is allocated a minimal level of resources consisting of one partition and one replica.

Одна служба должна иметь достаточно ресурсов для обработки всех рабочих нагрузок (индексирования и запросов).A single service must have sufficient resources to handle all workloads (indexing and queries). Ни одна рабочая нагрузка не выполняется в фоновом режиме.Neither workload runs in the background. Можно запланировать индексирование на время, когда запросы запросов естественным образом происходят реже, но служба не будет расставлять приоритеты для одной задачи поверх другой.You can schedule indexing for times when query requests are naturally less frequent, but the service will not otherwise prioritize one task over another. Кроме того, определенный объем избыточности повышает производительность запросов при внутреннем обновлении служб или узлов.Additionally, a certain amount of redundancy smooths out query performance when services or nodes are updated internally.

Как правило, в приложениях поиска обычно требуется больше реплик, чем для секций, особенно когда операции службы перемещаются в рабочие нагрузки запросов.As a general rule, search applications tend to need more replicas than partitions, particularly when the service operations are biased toward query workloads. В разделе, посвященном высокой доступности , объясняется, почему так происходит.The section on high availability explains why.

Примечание

Добавление дополнительных реплик или секций увеличивает затраты на выполнение службы и может привести к незначительным вариациям в порядке упорядочивания результатов.Adding more replicas or partitions increases the cost of running the service, and can introduce slight variations in how results are ordered. Не забудьте проверить Расчет цен , чтобы понять влияние добавления дополнительных узлов на выставление счетов.Be sure to check the pricing calculator to understand the billing implications of adding more nodes. Приведенная ниже диаграмма поможет вам перекрестно ссылаться на количество единиц поиска, необходимых для конкретной конфигурации.The chart below can help you cross-reference the number of search units required for a specific configuration. Дополнительные сведения о том, как дополнительные реплики влияют на обработку запросов, см. в разделе упорядочивание результатов.For more information on how additional replicas impact query processing, see Ordering results.

Как выделить реплики и секцииHow to allocate replicas and partitions

  1. Войдите на портал Azure и выберите службу поиска.Sign in to the Azure portal and select the search service.

  2. В разделе Параметрыоткройте страницу масштаб , чтобы изменить реплики и секции.In Settings, open the Scale page to modify replicas and partitions.

    На следующем снимке экрана показана стандартная служба, подготовленная с одной репликой и секцией.The following screenshot shows a standard service provisioned with one replica and partition. В формуле внизу показано, сколько единиц поиска используется (1).The formula at the bottom indicates how many search units are being used (1). Если цена за единицу была $100 (не реальная цена), ежемесячная стоимость запуска этой службы будет $100 в среднем.If the unit price was $100 (not a real price), the monthly cost of running this service would be $100 on average.

    ![Страница "Масштаб" с текущими значениями](media/search-capacity-planning/1-initial-values.png "Страница "Масштаб" с текущими значениями")Scale page showing current values

  3. Используйте ползунок, чтобы увеличить или уменьшить количество секций.Use the slider to increase or decrease the number of partitions. В формуле внизу показано, сколько единиц поиска используется.The formula at the bottom indicates how many search units are being used.

    В этом примере удваивается емкость с двумя репликами и секциями.This example doubles capacity, with two replicas and partitions each. Обратите внимание на число единиц поиска. Теперь это четыре, так как формула выставления счетов — это реплики, умноженные на секции (2 x 2).Notice the search unit count; it is now four because the billing formula is replicas multiplied by partitions (2 x 2). Удвоение емкости больше, чем удвоение стоимости запуска службы.Doubling capacity more than doubles the cost of running the service. Если цена за единицу поиска была $100, новый ежемесячный счет теперь будет $400.If the search unit cost was $100, the new monthly bill would now be $400.

    Текущие затраты на единицу каждого уровня см. на странице цен.For the current per unit costs of each tier, visit the Pricing page.

    Добавление реплик и секцийAdd replicas and partitions

  4. Нажмите кнопку сохранить , чтобы подтвердить изменения.Click Save to confirm the changes.

    Подтверждение изменений для масштабирования и выставления счетовConfirm changes to scale and billing

    Для выполнения изменений в емкости требуется несколько часов.Changes in capacity take several hours to complete. Нельзя отменить после запуска процесса, и в режиме реального времени не будет выполняться мониторинг реплик и секций.You cannot cancel once the process has started and there is no real-time monitoring for replica and partition adjustments. Однако следующее сообщение остается видимым во время внесения изменений.However, the following message remains visible while changes are underway.

    Сообщение о состоянии на порталеStatus message in the portal

Примечание

После подготовки службы ее нельзя обновить до более высокого уровня.After a service is provisioned, it cannot be upgraded to a higher tier. Вам нужно будет создать службу поиска на новом уровне и перезагрузить индексы.You must create a search service at the new tier and reload your indexes. Дополнительные сведения о подготовке службы см. в статье Создание службы когнитивный Поиск Azure на портале .See Create an Azure Cognitive Search service in the portal for help with service provisioning.

Кроме того, разделы и реплики управляются исключительно и внутренне службой.Additionally, partitions and replicas are managed exclusively and internally by the service. Нет концепции сходства процессоров или назначения рабочей нагрузки конкретному узлу.There is no concept of processor affinity, or assigning a workload to a specific node.

сочетания разделов и репликPartition and replica combinations

На уровне "Базовый" служба может иметь только одну секцию и до трех реплик. Таким образом, максимальное количество единиц поиска составляет три.A Basic service can have exactly one partition and up to three replicas, for a maximum limit of three SUs. Единственным ресурсом, который можно изменять, являются реплики.The only adjustable resource is replicas. Требуется не менее двух реплик, чтобы обеспечить высокий уровень доступности при обработке запросов.You need a minimum of two replicas for high availability on queries.

Все стандартные и оптимизированные для хранилища службы поиска могут принимать следующие сочетания реплик и секций с ограничением в 36-SU.All Standard and Storage Optimized search services can assume the following combinations of replicas and partitions, subject to the 36-SU limit.

1 Секция1 partition 2 секции2 partitions 3 секции3 partitions 4 секции4 partitions 6 секций6 partitions 12 секций12 partitions
1 реплика1 replica 1 ЕП1 SU 2 ЕП2 SU 3 ЕП3 SU 4 ЕП4 SU 6 ЕП6 SU 12 ЕП12 SU
2 реплики2 replicas 2 ЕП2 SU 4 ЕП4 SU 6 ЕП6 SU 8 ЕП8 SU 12 ЕП12 SU 24 ЕП24 SU
3 реплики3 replicas 3 ЕП3 SU 6 ЕП6 SU 9 ЕП9 SU 12 ЕП12 SU 18 ЕП18 SU 36 ЕП36 SU
4 реплики4 replicas 4 ЕП4 SU 8 ЕП8 SU 12 ЕП12 SU 16 ЕП16 SU 24 ЕП24 SU НедоступноN/A
5 реплик5 replicas 5 ЕП5 SU 10 ЕП10 SU 15 ЕП15 SU 20 ЕП20 SU 30 ЕП30 SU НедоступноN/A
6 реплик6 replicas 6 ЕП6 SU 12 ЕП12 SU 18 ЕП18 SU 24 ЕП24 SU 36 ЕП36 SU НедоступноN/A
12 реплик12 replicas 12 ЕП12 SU 24 ЕП24 SU 36 ЕП36 SU НедоступноN/A НедоступноN/A НедоступноN/A

Подробные сведения о единицах поиска, ценах и объемах приведены на веб-сайте Azure.SUs, pricing, and capacity are explained in detail on the Azure website. Дополнительные сведения см. на странице с ценами.For more information, see Pricing Details.

Примечание

Количество реплик и секций должно быть делителем 12 (а именно 1, 2, 3, 4, 6, 12).The number of replicas and partitions divides evenly into 12 (specifically, 1, 2, 3, 4, 6, 12). Это связано с тем, что Azure Когнитивный поиск предварительно делит каждый индекс на 12 сегментов, чтобы его можно было распределять по всем секциям в равных частях.This is because Azure Cognitive Search pre-divides each index into 12 shards so that it can be spread in equal portions across all partitions. Например, если в вашей службе есть три секции и вы создаете индекс, то каждая секция будет содержать по четыре сегмента индекса.For example, if your service has three partitions and you create an index, each partition will contain four shards of the index. Как Azure Когнитивный поиск сегментирование индекса — это сведения о реализации, которые могут быть изменены в будущих выпусках.How Azure Cognitive Search shards an index is an implementation detail, subject to change in future releases. Несмотря на то, что сегодня это число 12, вам не следует полагаться на то, что в будущем оно не изменится.Although the number is 12 today, you shouldn't expect that number to always be 12 in the future.

Высокий уровень доступностиHigh availability

Поскольку задача масштабирования решается достаточно легко и быстро, на начальном этапе обычно рекомендуется использовать один раздел и одну или две реплики, увеличивая их количество по мере роста запросов.Because it's easy and relatively fast to scale up, we generally recommend that you start with one partition and one or two replicas, and then scale up as query volumes build. Рабочие нагрузки запросов в основном выполняются с репликами.Query workloads run primarily on replicas. Для повышения пропускной способности или обеспечения высокого уровня доступности вам, скорее всего, потребуется больше реплик.If you need more throughput or high availability, you will probably require additional replicas.

Ниже приведены общие рекомендации для обеспечения высокой доступности.General recommendations for high availability are:

  • Две реплики для обеспечения высокой доступности рабочих нагрузок для чтения (запросов).Two replicas for high availability of read-only workloads (queries)

  • Три или более реплик для обеспечения высокого уровня доступности рабочих нагрузок чтения и записи (запросов и индексирования по мере добавления, обновления или удаления отдельных документов).Three or more replicas for high availability of read/write workloads (queries plus indexing as individual documents are added, updated, or deleted)

Соглашения об уровне обслуживания (SLA) для Azure Когнитивный поиск предназначены для операций запросов и обновлений индекса, состоящих из добавления, обновления или удаления документов.Service level agreements (SLA) for Azure Cognitive Search are targeted at query operations and at index updates that consist of adding, updating, or deleting documents.

Категория "Базовый" ограничена одной секцией и тремя репликами.Basic tier tops out at one partition and three replicas. Если нужно оперативно реагировать на колебания требований к индексированию и пропускной способности запросов, рекомендуем использовать одну из категорий "Стандартный".If you want the flexibility to immediately respond to fluctuations in demand for both indexing and query throughput, consider one of the Standard tiers. Если вы обнаружите, что требования к хранилищу увеличиваются гораздо быстрее, чем пропускная способность запроса, рассмотрите один из уровней, оптимизированных для хранилища.If you find your storage requirements are growing much more rapidly than your query throughput, consider one of the Storage Optimized tiers.

Аварийное восстановлениеDisaster recovery

В настоящее время встроенного механизма для аварийного восстановления не предусмотрено.Currently, there is no built-in mechanism for disaster recovery. Увеличение разделов или реплик для решения задач аварийного восстановления является ошибочной стратегией.Adding partitions or replicas would be the wrong strategy for meeting disaster recovery objectives. Наиболее распространенным подходом является добавление избыточности на уровне службы за счет настройки второй службы поиска в другом регионе.The most common approach is to add redundancy at the service level by setting up a second search service in another region. Как и в случае с доступностью при повторном создании индекса, перенаправление и логику отработки отказа должен обеспечивать ваш код.As with availability during an index rebuild, the redirection or failover logic must come from your code.

Оценка репликEstimate replicas

В рабочей службе необходимо выделить три реплики для целей соглашения об уровне обслуживания.On a production service, you should allocate three replicas for SLA purposes. При низкой производительности запросов можно добавить реплики, чтобы дополнительные копии индекса перевелися в оперативный режим для поддержки большего количества рабочих нагрузок запросов и балансировки нагрузки запросов по нескольким репликам.If you experience slow query performance, you can add replicas so that additional copies of the index are brought online to support bigger query workloads and to load balance the requests over the multiple replicas.

Мы не предоставляем рекомендации по количеству реплик, необходимых для загрузки запросов.We do not provide guidelines on how many replicas are needed to accommodate query loads. Производительность запросов зависит от сложности запроса и конкурирующих рабочих нагрузок.Query performance depends on the complexity of the query and competing workloads. Добавляя реплики, можно повысить производительность, но результат не обязательно будет линейным. Например, добавление трех реплик не гарантирует трехкратный рост пропускной способности.Although adding replicas clearly results in better performance, the result is not strictly linear: adding three replicas does not guarantee triple throughput.

Рекомендации по оценке QPS для вашего решения см. в статье масштабирование для производительностии мониторинга запросов .For guidance in estimating QPS for your solution, see Scale for performanceand Monitor queries

Оценка секцийEstimate partitions

Выбранный уровень определяет размер и скорость секции, и каждый уровень оптимизирован по набору характеристик, соответствующих различным сценариям.The tier you choose determines partition size and speed, and each tier is optimized around a set of characteristics that fit various scenarios. При выборе более высокого уровня может потребоваться меньше секций, чем при переходе на S1.If you choose a higher-end tier, you might need fewer partitions than if you go with S1. Один из вопросов, на которые нужно ответить при самостоятельном тестировании, — это увеличение и повышение производительности секции, что повышает производительность, чем две более дешевые секции в службе, подготовленные на более низком уровне.One of the questions you'll need to answer through self-directed testing is whether a larger and more expensive partition yields better performance than two cheaper partitions on a service provisioned at a lower tier.

Приложениям поиска, которым требуется обновления данных в режиме, близком к реальному времени, понадобится пропорционально больше секций, чем реплик.Search applications that require near real-time data refresh will need proportionally more partitions than replicas. При добавлении секций операции чтения-записи распределяются среди большего количества вычислительных ресурсов.Adding partitions spreads read/write operations across a larger number of compute resources. Оно также обеспечивает больше дискового пространства для хранения дополнительных индексов и документов.It also gives you more disk space for storing additional indexes and documents.

Запрос больших индексов выполняется дольше.Larger indexes take longer to query. Поэтому может оказаться, что каждое добавочное увеличение числа секций потребует меньшего, но пропорционального увеличения числа реплик.As such, you might find that every incremental increase in partitions requires a smaller but proportional increase in replicas. Сложность запросов и их объем обусловливают скорость выполнения запросов.The complexity of your queries and query volume will factor into how quickly query execution is turned around.

Дальнейшие действияNext steps