Estimar e gerir a capacidade de um serviço de pesquisa

No Azure AI Search, a capacidade é baseada em réplicas e partições que podem ser dimensionadas para sua carga de trabalho. As réplicas são cópias do motor de pesquisa. As divisórias são unidades de armazenamento. Cada novo serviço de pesquisa começa com um cada, mas você pode adicionar ou remover réplicas e partições independentemente para acomodar cargas de trabalho flutuantes. Adicionar capacidade aumenta o custo de execução de um serviço de pesquisa.

As características físicas das réplicas e partições, como velocidade de processamento e E/S do disco, variam de acordo com a camada de serviço. Em um serviço de pesquisa padrão, as réplicas e partições são mais rápidas e maiores do que as de um serviço básico.

A mudança de capacidade não é instantânea. Pode levar até uma hora para comissionar ou desativar partições, especialmente em serviços com grandes quantidades de dados.

Ao dimensionar um serviço de pesquisa, você pode escolher entre as seguintes ferramentas e abordagens:

Nota

As partições de maior capacidade estão disponíveis à mesma taxa de faturação em serviços mais recentes criados após abril e maio de 2024. Para obter mais informações, consulte Limites de serviço para atualizações de tamanho de partição.

Conceitos: unidades de pesquisa, réplicas, partições

A capacidade é expressa em unidades de pesquisa que podem ser alocadas em combinações de partições e réplicas.

Conceito Definição
Unidade de pesquisa Um único incremento da capacidade total disponível (36 unidades). É necessário um mínimo de uma unidade para executar o serviço. O primeiro par de réplica e partição é a primeira unidade de pesquisa. No entanto, cada instância extra de uma réplica ou partição consome uma unidade de pesquisa extra. Por exemplo, você começa com uma réplica e partição (uma unidade de pesquisa), adiciona uma segunda réplica, agora está consumindo duas unidades de pesquisa. Uma unidade de pesquisa também é a unidade de cobrança de um serviço de Pesquisa de IA do Azure.
Réplica Instâncias do serviço de pesquisa, usadas principalmente para operações de consulta de balanceamento de carga. Cada réplica hospeda uma cópia de um índice. Se você alocar três réplicas, terá três cópias de um índice disponíveis para atender às solicitações de consulta.
Partição Armazenamento físico e E/S para operações de leitura/gravação (por exemplo, ao reconstruir ou atualizar um índice). Cada partição tem uma fatia do índice total. Se você alocar três partições, seu índice será dividido em terços.

Analise a tabela de partições e réplicas para obter possíveis combinações que permaneçam abaixo do limite de 36 unidades.

Quando adicionar capacidade

Inicialmente, um serviço recebe um nível mínimo de recursos que consistem em uma partição e uma réplica. A camada escolhida determina o tamanho e a velocidade da partição, e cada camada é otimizada em torno de um conjunto de características que se ajustam a vários cenários. Se você escolher uma camada mais avançada, talvez precise de menos partições do que se optar pelo S1. Uma das perguntas que você precisará responder por meio de testes autodirigidos é se uma partição maior e mais cara produz melhor desempenho do que duas partições mais baratas em um serviço provisionado em um nível mais baixo.

Um único serviço deve ter recursos suficientes para lidar com todas as cargas de trabalho (indexação e consultas). Nenhuma carga de trabalho é executada em segundo plano. Você pode agendar a indexação para momentos em que as solicitações de consulta são naturalmente menos frequentes, mas o serviço não priorizará uma tarefa em detrimento de outra. Além disso, uma certa quantidade de redundância suaviza o desempenho da consulta quando os serviços ou nós são atualizados internamente.

Algumas diretrizes para determinar se a capacidade deve ser adicionada incluem:

  • Atendendo aos critérios de alta disponibilidade para o contrato de nível de serviço
  • A frequência de erros HTTP 503 está aumentando
  • São esperados grandes volumes de consulta

Como regra geral, os aplicativos de pesquisa tendem a precisar de mais réplicas do que partições, especialmente quando as operações de serviço são tendenciosas para cargas de trabalho de consulta. Cada réplica é uma cópia do seu índice, permitindo que o serviço balanceie a carga de solicitações em relação a várias cópias. Todo o balanceamento de carga e replicação de um índice é gerenciado pelo Azure AI Search e você pode alterar o número de réplicas alocadas para seu serviço a qualquer momento. Você pode alocar até 12 réplicas em um serviço de pesquisa padrão e 3 réplicas em um serviço de pesquisa Básico. A alocação de réplicas pode ser feita a partir do portal do Azure ou de uma das opções programáticas.

Partições extras são úteis para cargas de trabalho de indexação intensivas. Partições extras espalham operações de leitura/gravação por um número maior de recursos de computação.

Finalmente, índices maiores levam mais tempo para consultar. Como tal, você pode achar que cada aumento incremental em partições requer um aumento menor, mas proporcional, em réplicas. A complexidade das consultas e do volume de consultas influenciará a rapidez com que a execução da consulta será transformada.

Nota

Adicionar mais réplicas ou partições aumenta o custo de execução do serviço e pode introduzir pequenas variações na forma como os resultados são ordenados. Certifique-se de verificar a calculadora de preços para entender as implicações de faturamento da adição de mais nós. O gráfico abaixo pode ajudá-lo a fazer referência cruzada ao número de unidades de pesquisa necessárias para uma configuração específica. Para obter mais informações sobre como réplicas adicionais afetam o processamento de consultas, consulte Ordenando resultados.

Como alterar a capacidade

Para aumentar ou diminuir a capacidade do seu serviço de pesquisa, adicione ou remova partições e réplicas.

  1. Entre no portal do Azure e selecione o serviço de pesquisa.

  2. Em Configurações, abra a página Escala para modificar réplicas e partições.

    A captura de tela a seguir mostra um serviço Standard provisionado com uma réplica e uma partição. A fórmula na parte inferior indica quantas unidades de pesquisa estão a ser utilizadas (1). Se o preço unitário fosse de US $ 100 (não um preço real), o custo mensal de execução deste serviço seria de US $ 100 em média.

    Página de escala mostrando os valores atuais

  3. Use o controle deslizante para aumentar ou diminuir o número de partições. Selecione Guardar.

    Este exemplo adiciona uma segunda réplica e uma partição. Observe a contagem de unidades de pesquisa; agora são quatro porque a fórmula de faturamento é replicações multiplicadas por partições (2 x 2). A duplicação da capacidade mais do que duplica o custo de funcionamento do serviço. Se o custo unitário de pesquisa fosse de US $ 100, a nova conta mensal agora seria de US $ 400.

    Para obter os custos unitários atuais de cada nível, visite a página Preços.

    Adicionar réplicas e partições

  4. Depois de salvar, você pode verificar as notificações para confirmar que a ação foi bem-sucedida.

    Guardar alterações

    As alterações na capacidade podem levar de 15 minutos a várias horas para serem concluídas. Não é possível cancelar depois que o processo for iniciado e não houver monitoramento em tempo real para ajustes de réplica e partição. No entanto, a seguinte mensagem permanece visível enquanto as alterações estão em curso.

    Mensagem de status no portal

Nota

Depois que um serviço é provisionado, ele não pode ser atualizado para uma camada superior. Você deve criar um serviço de pesquisa na nova camada e recarregar seus índices. Consulte Criar um serviço Azure AI Search no portal para obter ajuda com o provisionamento de serviços.

Como as solicitações de escala são tratadas

Após receção de um pedido de escala, o serviço de pesquisa:

  1. Verifica se a solicitação é válida.
  2. Inicia o backup de dados e informações do sistema.
  3. Verifica se o serviço já está em um estado de provisionamento (atualmente adicionando ou eliminando réplicas ou partições).
  4. Inicia o provisionamento.

O dimensionamento de um serviço pode levar apenas 15 minutos ou bem mais de uma hora, dependendo do tamanho do serviço e do escopo da solicitação. O backup pode levar vários minutos, dependendo da quantidade de dados e do número de partições e réplicas.

As etapas acima não são totalmente consecutivas. Por exemplo, o sistema inicia o provisionamento quando pode fazê-lo com segurança, o que pode ocorrer enquanto o backup está acabando.

Erros durante o dimensionamento

A mensagem de erro "As operações de atualização de serviço não são permitidas neste momento porque estamos processando uma solicitação anterior" é causada pela repetição de uma solicitação para reduzir ou aumentar quando o serviço já está processando uma solicitação anterior.

Resolva esse erro verificando o status do serviço para verificar o status do provisionamento:

  1. Use a API REST de gerenciamento, o Azure PowerShell ou a CLI do Azure para obter o status do serviço.
  2. Chame Get Service (REST) ou equivalente para o PowerShell ou a CLI.
  3. Verifique a resposta para "provisioningState": "provisioning"

Se o status for "Provisionamento", aguarde a conclusão da solicitação. O status deve ser "Bem-sucedido" ou "Falhado" antes que outra solicitação seja tentada. Não há status para backup. O backup é uma operação interna e é improvável que seja um fator em qualquer interrupção de um exercício de escala.

Se o serviço de pesquisa parecer estar parado em um estado de provisionamento, verifique se há índices órfãos inutilizáveis, com zero volumes de consulta e sem atualizações de índice. Um índice inutilizável pode bloquear alterações na capacidade de serviço. Em particular, procure por índices que são criptografados por CMK, cujas chaves não são mais válidas. Você deve excluir o índice ou restaurar as chaves para colocá-lo online novamente e desbloquear sua operação de escala.

Combinações de partição e réplica

O gráfico a seguir se aplica à camada Standard e superior. Ele mostra todas as combinações possíveis de partições e réplicas, sujeito ao máximo de 36 unidades de pesquisa por serviço.

1 partição 2 divisórias 3 divisórias 4 divisórias 6 divisórias 12 divisórias
1 réplica 1 SU 2 SU 3 SU 4 SU 6 SU 12 SU
2 réplicas 2 SU 4 SU 6 SU 8 SU 12 SU 24 SU
3 réplicas 3 SU 6 SU 9 SU 12 SU 18 SU 36 SU
4 réplicas 4 SU 8 SU 12 SU 16 SU 24 SU N/A
5 réplicas 5 SU 10 SU 15 SU 20 SU 30 SU N/A
6 réplicas 6 SU 12 SU 18 SU 24 SU 36 SU N/A
12 réplicas 12 SU 24 SU 36 SU N/A N/D N/A

Os serviços de pesquisa básica têm contagens de unidades de pesquisa mais baixas.

  • Nos serviços de pesquisa criados antes de 3 de abril de 2024, um serviço de pesquisa básica pode ter exatamente uma partição e até três réplicas, para um limite máximo de três SUs. O único recurso ajustável são as réplicas.

  • Nos serviços de pesquisa criados após 3 de abril de 2024 em regiões suportadas, os serviços básicos podem ter até três partições e três réplicas. O limite máximo de SU é de nove para suportar um complemento completo de partições e réplicas.

Para serviços de pesquisa em qualquer nível faturável, independentemente da data de criação, você precisa de um mínimo de duas réplicas para alta disponibilidade em consultas.

Para obter taxas de cobrança por camada e moeda, consulte a página de preços do Azure AI Search.

Estimar a capacidade usando um nível faturável

As necessidades de armazenamento são determinadas pelo tamanho dos índices que você espera criar. Não há heurísticas ou generalidades sólidas que ajudem nas estimativas. A única maneira de determinar o tamanho de um índice é construir um. Seu tamanho é baseado na tokenização e incorporações, e se você habilita sugestões, filtragem e classificação, ou pode tirar proveito da compactação vetorial.

Recomendamos estimar em um nível faturável, Básico ou superior. O nível Gratuito é executado em recursos físicos compartilhados por vários clientes e está sujeito a fatores fora do seu controle. Somente os recursos dedicados de um serviço de pesquisa faturável podem acomodar maiores tempos de amostragem e processamento para estimativas mais realistas de quantidade, tamanho e volumes de consulta de índice durante o desenvolvimento.

  1. Analise os limites de serviço em cada camada para determinar se as camadas inferiores podem suportar o número de índices de que você precisa. Considere se você precisa de várias cópias de um índice para desenvolvimento, teste e produção ativos.

    Um serviço de pesquisa está sujeito a limites de objetos (número máximo de índices, indexadores, conjuntos de habilidades, etc.) e limites de armazenamento. Qualquer que seja o limite atingido primeiro é o limite efetivo.

  2. Crie um serviço em uma camada faturável. As camadas são otimizadas para determinadas cargas de trabalho. Por exemplo, a camada otimizada para armazenamento tem um limite de 10 índices porque foi projetada para oferecer suporte a um número baixo de índices muito grandes.

    • Comece baixo, em Basic ou S1, se não tiver certeza sobre a carga projetada.

    • Comece alto, em S2 ou mesmo S3, se o teste incluir indexação em grande escala e cargas de consulta.

    • Comece com Armazenamento otimizado, em L1 ou L2, se você estiver indexando uma grande quantidade de dados e a carga de consulta for relativamente baixa, como em um aplicativo de negócios interno.

  3. Crie um índice inicial para determinar como os dados de origem se traduzem em um índice. Esta é a única maneira de estimar o tamanho do índice. Os atributos nas definições de campo afetam os requisitos de armazenamento físico:

  4. Monitore o armazenamento, os limites de serviço, o volume de consultas e a latência no portal. O portal mostra consultas por segundo, consultas limitadas e latência de pesquisa. Todos esses valores podem ajudá-lo a decidir se você selecionou a camada correta.

  5. Adicione réplicas para alta disponibilidade ou para reduzir o desempenho lento da consulta.

    Não há diretrizes sobre quantas réplicas são necessárias para acomodar cargas de consulta. O desempenho da consulta depende da complexidade da consulta e das cargas de trabalho concorrentes. Embora a adição de réplicas resulte claramente em melhor desempenho, o resultado não é estritamente linear: adicionar três réplicas não garante uma taxa de transferência tripla. Para obter orientação sobre como estimar o QPS para sua solução, consulte Analisar desempenhoe monitorar consultas.

Para um índice invertido, o tamanho e a complexidade são determinados pelo conteúdo, não necessariamente pela quantidade de dados que você alimenta nele. Uma fonte de dados grande com alta redundância pode resultar em um índice menor do que um conjunto de dados menor que contém conteúdo altamente variável. Portanto, raramente é possível inferir o tamanho do índice com base no tamanho do conjunto de dados original.

Os requisitos de armazenamento podem ser inflados se você incluir dados que nunca serão pesquisados. Idealmente, os documentos contêm apenas os dados de que necessita para a experiência de pesquisa.

Considerações sobre o contrato de nível de serviço

Os recursos de nível gratuito e visualização não são cobertos por SLAs (contratos de nível de serviço). Para todos os níveis faturáveis, os SLAs entram em vigor quando você provisiona redundância suficiente para seu serviço.

  • Duas ou mais réplicas satisfazem SLAs de consulta (leitura).

  • Três ou mais réplicas satisfazem SLAs de consulta e indexação (leitura-gravação).

O número de partições não afeta os SLAs.

Próximos passos