Ajustar as configurações do conector

O SDK do Google Cloud Search contém vários parâmetros de configuração fornecidos pelo Google que são usados por todos os conectores. Saber como ajustar essas configurações pode otimizar bastante a indexação de dados. Este guia lista vários problemas que podem surgir durante a indexação e as configurações usadas para resolvê-los.

A capacidade de indexação é baixa para o FullTraversalConnector

A tabela a seguir lista as definições de configuração para melhorar a capacidade de FullTraversalConnector:

Configuração Descrição Padrão Alteração na configuração para testar
traverse.partitionSize O número de ApiOperation() a ser processado em lotes antes de buscar outro APIOperation(). O SDK aguarda o processamento da partição atual antes de buscar outros itens. Essa configuração depende da quantidade de memória disponível. Tamanhos de partição menores, como 50 ou 100, exigem menos memória, mas mais espera por causa do SDK. 50 Se você tiver muita memória disponível, tente aumentar partitionSize para 1000 ou mais.
batch.batchSize O número de solicitações em lote. No final do particionamento, o SDK aguarda o processamento de todas as solicitações em lote da partição. Lotes maiores requerem uma espera mais longa. 10 Tente diminuir o tamanho do lote.
batch.maxActiveBatches Número de lotes de execução simultânea permitidos. 20 Se você reduzir batchSize, você precisa aumentar maxActiveBatches de acordo com a fórmula:

maxActiveBatches = (partitionSize / batchSize) + 50. Por exemplo, se partititionSize for 1000 e batchSize for 5, maxActiveBatches deverá ser 250. Os 50 a mais são um buffer para solicitações de nova tentativa. Esse aumento permite que o conector agrupe todas as solicitações sem bloqueio.
traverse.threadPoolSize Número de linhas de execução que o conector cria para permitir o processamento paralelo. Um único iterador busca operações (normalmente objetos RepositoryDoc) em série, mas a API chama o processo em paralelo usando o número de linhas de execução threadPoolSize. Cada linha de execução processa um item de cada vez. O padrão 50 processa no máximo apenas 50 itens simultaneamente e leva aproximadamente 4 segundos para processar um item individual (incluindo a solicitação de indexação). 50 Tente aumentar threadPoolSize por um múltiplo de 10.

Por fim, considere usar o método setRequestMode() para alterar o modo de solicitação de API (ASYNCHRONOUS ou SYNCHRONOUS).

Para mais informações sobre os parâmetros do arquivo de configuração, consulte Parâmetros de configuração fornecidos pelo Google.

A capacidade de indexação é baixa para ListTraversalConnector

Por padrão, um conector que implementa o ListTraversalConnnector usa um único atravessador para indexar seus itens. Para aumentar a capacidade de indexação, é possível criar vários atravessadores, cada um com sua própria configuração, com foco em status específicos de item (NEW_ITEM, MODIFIED etc.). A tabela a seguir lista as definições de configuração para melhorar a capacidade:

.
ConfiguraçãoDescriçãoPadrãoAlteração na configuração para testar
repository.traversers = t1, t2, t3, ...Cria um ou mais atravessadores individuais, em que t1, t2, t3 (...) é o nome exclusivo de cada um. Cada atravessador nomeado tem seu próprio conjunto de configurações que são identificadas usando o nome exclusivo do atravessador, como traversers.t1.hostload e traversers.t2.hostloadUm atravessadorUse esta configuração para adicionar mais atravessadores.
traversers.t1.hostload = nIdentifica o número de linhas de execução, n, a serem usadas para indexar itens simultaneamente.5Tente ajustar n com base na quantidade de carga que você quer colocar no seu repositório. Comece com valores iguais ou superiores a 10.
schedule.pollQueueIntervalSecs = sIdentifica o número de segundos, s, a esperar antes da nova pesquisa. O conector de conteúdo continua pesquisando itens, desde que a API retorne itens na resposta da pesquisa. Quando essa resposta está vazia, o conector aguarda s segundos antes de tentar novamente. Essa configuração é usada apenas pelo ListingConnector.10Tente diminuir para 1.
traverser.t1.pollRequest.statuses = status1, status2, …Especifica os status (status1, status2 etc.) dos itens para indexar. Por exemplo, definir status1 como NEW_ITEM e status2 como MODIFIED instrui o atravessador t1 a indexar apenas os itens com esses status.Um atravessador verifica todos os status.Teste ter diferentes atravessadores pesquisando diferentes status.

Para mais informações sobre os parâmetros do arquivo de configuração, consulte Parâmetros de configuração fornecidos pelo Google.

Tempos limites ou interrupções do SDK durante o upload de arquivos grandes

Se ocorrer uma interrupção no SDK ou tempo limite dele esgotar durante o carregamento de arquivos grandes, especifique um tempo limite maior usando traverser.timeout=s (em que s = número de segundos). Este valor identifica quanto tempo as linhas de execução do worker têm para processar um item. O tempo limite padrão no SDK é de 60 segundos para as linhas de execução de atravessador. Além disso, se o tempo limite de solicitações de API individuais esgotar, use os seguintes métodos para aumentar os valores de tempo limite da solicitação:

Parâmetro de tempo limite de solicitação Descrição Padrão
indexingService.connectTimeoutSeconds Conecte o tempo limite para indexar solicitações de API. 120 segundos
indexingService.readTimeoutSeconds Leia o tempo limite para indexar solicitações de API. 120 segundos