Como melhorar a performance de indexação em meu cluster do Amazon OpenSearch Service?
Quero otimizar as operações de indexação no Amazon OpenSearch Service para obter o máximo throughput de ingestão. Como fazer isso?
Resolução
Certifique-se de que os fragmentos sejam distribuídos uniformemente pelos nós de dados para o índice que você está ingerindo
Use a seguinte fórmula para confirmar se os fragmentos estão distribuídos uniformemente:
Número de fragmentos para o índice = k * (Número de nós de dados), em que k é o número de fragmentos por nó
Por exemplo, se houver 24 fragmentos no índice e oito nós de dados, o OpenSearch Service atribuirá três fragmentos a cada nó. Para obter mais informações, consulte Conceitos básicos do Amazon OpenSearch Service: de quantos fragmentos eu preciso?
Aumente o refresh_interval para 60 segundos ou mais
Atualize o índice do OpenSearch Service para que seus documentos fiquem disponíveis para pesquisa. Observe que a atualização do índice requer os mesmos recursos usados pelos threads de indexação.
O intervalo de atualização padrão é de um segundo. Quando você aumenta o intervalo de atualização, o nó de dados faz menos chamadas de API. O intervalo de atualização pode ser mais curto ou mais rápido, conforme a duração do intervalo de atualização. Para evitar erros 429, é uma prática recomendada aumentar o intervalo de atualização.
Observação: o intervalo de atualização padrão é de um segundo para índices que recebem uma ou mais solicitações de pesquisa nos últimos 30 segundos. Para obter mais informações sobre o intervalo padrão atualizado, consulte API _refresh versão 7.x no site do Elasticsearch.
Altere a contagem de réplicas para zero
Caso preveja uma indexação pesada, você pode definir o valor de index.number_of_replicas como “0”. Cada réplica duplica o processo de indexação. Como resultado, desabilitar as réplicas melhora a performance do cluster. Depois que a indexação pesada estiver concluída, reative os índices replicados.
Importante: se um nó falhar enquanto as réplicas estiverem desabilitadas, você poderá perder dados. Desabilite as réplicas somente se você puder tolerar a perda de dados por um curto período.
Experimente para encontrar o tamanho ideal da solicitação em massa
Comece com o tamanho da solicitação em massa de 5 a 15 MiB. Em seguida, aumente lentamente o tamanho da solicitação até que a performance da indexação pare de melhorar. Para obter mais informações, consulte Usar e dimensionar solicitações em massa no site do Elasticsearch.
Observação: alguns tipos de instância limitam as solicitações em massa a 10 MiB. Para obter mais informações, consulte Limites de rede.
Use um tipo de instância que tenha volumes de armazenamento de instâncias SSD (como I3)
As instâncias I3 fornecem armazenamento rápido e local memory express (NVMe). As instâncias I3 oferecem melhor performance de ingestão do que as instâncias que usam volumes de SSD de uso geral (gp2) do Amazon Elastic Block Store (Amazon EBS). Para obter mais informações, consulteReduzir a escala horizontalmente de petabytes no Amazon OpenSearch Service.
Reduzir o tempo de resposta
Para reduzir o tamanho da resposta do OpenSearch Service, use o parâmetro filter_path para excluir campos desnecessários. Certifique-se de não filtrar os campos necessários para identificar ou fazer novas tentativas de solicitações com falha. Esses campos podem variar de acordo com o cliente.
No exemplo a seguir, os campos index-name, type-name e took são excluídos da resposta:
curl -XPOST "es-endpoint/index-name/type-name/_bulk?pretty&filter_path=-took,-items.index._index,-items.index._type" -H 'Content-Type: application/json' -d' { "index" : { "_index" : "test2", "_id" : "1" } } { "user" : "testuser" } { "update" : {"_id" : "1", "_index" : "test2"} } { "doc" : {"user" : "example"} }
Para obter mais informações, consulte Redução do tamanho da resposta.
Aumente o valor de index.translog.flush_threshold_size
Por padrão, index.translog.flush_threshold_size é definido como 512 MB. Isso significa que translog é liberado quando atinge 512 MB. O peso da carga de indexação determina a frequência do translog. Quando você aumenta index.translog.flush_threshold_size, o nó executa a operação de translog com menos frequência. Como as liberações do OpenSearch Service são operações que consomem muitos recursos, a redução da frequência de translogs melhora a performance da indexação. Ao aumentar o tamanho do limite de descarga, o cluster do OpenSearch Service também cria menos segmentos grandes (em vez de vários segmentos pequenos). Segmentos grandes se fundem com menos frequência, e utilizam-se mais threads para indexar em vez de mesclar.
Observação: um aumento no index.translog.flush_threshold_size também pode aumentar o tempo de conclusão de um translog. Se um fragmento falhar, a recuperação levará mais tempo porque o translog é maior.
Antes de aumentar index.translog.flush_threshold_size, chame a seguinte operação de API para obter as estatísticas atuais da operação de descarga:
curl -XPOST "os-endpoint/index-name/_stats/flush?pretty"
Substitua os-endpoint e index-name pelas respectivas variáveis.
Na saída, observe o número de descargas e o tempo total. O exemplo de saída a seguir mostra que há 124 descargas, que levaram 17.690 milissegundos:
{ "flush": { "total": 124, "total_time_in_millis": 17690 } }
Para aumentar o tamanho do limite de liberação, chame a seguinte operação de API:
$ curl -XPUT "os-endpoint/index-name/_settings?pretty" -d "{"index":{"translog.flush_threshold_size" : "1024MB"}}"
Neste exemplo, o tamanho do limite de liberação é definido como 1024 MB, o que é ideal para instâncias com mais de 32 GB de memória.
Observação: escolha o tamanho de limite apropriado para o domínio do OpenSearch Service.
Execute a operação da API _stats novamente para ver se a atividade de descarga mudou:
$ curl _XGET "os-endpoint/index-name/_stats/flush?pretty"
Observação: é uma prática recomendada aumentar o index.translog.flush_threshold_size somente para o índice atual. Depois de confirmar o resultado, aplique as alterações ao modelo de índice.
Informações relacionadas
Conteúdo relevante
- Como reequilibrar a distribuição desigual de fragmentos em meu cluster do Amazon OpenSearch Service?AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos