Paramètres du connecteur de réglage

Le SDK Google Cloud Search contient plusieurs configurations fournies par Google paramètres utilisés par tous les connecteurs. Savoir comment régler ces paramètres peut considérablement simplifier l'indexation des données. Ce guide répertorie plusieurs problèmes peuvent apparaître lors de l'indexation et les paramètres utilisés pour les résoudre.

Débit d'indexation faible pour FullTraversalConnector

Le tableau suivant répertorie les paramètres de configuration permettant d'améliorer le débit pour un FullTraversalConnector:

Paramètre Description Par défaut Modifier la configuration à essayer
traverse.partitionSize Nombre d'ApiOperation() à traiter par lots avant la récupération de APIOperation() supplémentaires. Le SDK attend que la partition actuelle soit traitée avant d'extraire des éléments supplémentaires. Ce paramètre dépend de la quantité de mémoire disponible. Les partitions plus petites, telles que 50 ou 100, nécessitent moins de mémoire, mais davantage d'attentes au nom du SDK. 50 Si vous avez beaucoup de mémoire disponible, essayez d'augmenter partitionSize à 1 000 ou plus.
batch.batchSize Nombre de requêtes regroupées. À la fin du partitionnement, le SDK attend que toutes les requêtes par lot de la partition soient traitées. Les lots plus volumineux nécessitent un temps d'attente plus long. 10 Essayez de réduire la taille de lot.
batch.maxActiveBatches Nombre de lots autorisés en cours d'exécution simultanée. 20 Si vous réduisez la valeur de batchSize, vous devez repousser maxActiveBatches selon la formule suivante:

maxActiveBatches = (partitionSize / batchSize) + 50. Par exemple, si votre partititionSize est de 1 000 et que votre batchSize est de 5, votre maxActiveBatches devrait être de 250. Les 50 pas supplémentaires constituent un tampon pour les nouvelles tentatives de requêtes. Cette augmentation permet au connecteur de traiter toutes les requêtes par lot, sans les bloquer.
traverse.threadPoolSize Nombre de threads créés par le connecteur pour permettre le traitement en parallèle. Un seul itérateur extrait les opérations (généralement des objets RepositoryDoc) en série, mais les appels d'API les traitent en parallèle en utilisant le nombre de threads de threadPoolSize. Chaque thread traite un élément à la fois. Avec la valeur par défaut 50, seuls 50 éléments maximum sont traités simultanément. Le traitement d'un élément individuel (demande d'indexation incluse) prend environ 4 secondes. 50 Essayez d'augmenter threadPoolSize par un multiple de 10.

Enfin, envisagez d'utiliser la méthode setRequestMode() pour modifier le mode de requête API (ASYNCHRONOUS ou SYNCHRONOUS).

Pour en savoir plus sur les paramètres du fichier de configuration, consultez Paramètres de configuration fournis par Google.

Le débit d'indexation est faible pour ListTraversalConnector

Par défaut, un connecteur qui implémente le ListTraversalConnnector utilise un pour indexer vos éléments. Pour augmenter le débit d'indexation, vous pouvez créez plusieurs balayages, chacun avec sa propre configuration, en vous concentrant sur des les états des articles (NEW_ITEM, MODIFIED, etc.). Le tableau suivant répertorie afin d'améliorer le débit:

.
ParamètreDescriptionPar défautModifier la configuration à essayer
repository.traversers = t1, t2, t3, ...Crée un ou plusieurs balayages individuels, où t1, t2, t3, ... est le nom unique de chacun d'eux. Chaque balayage nommé possède son propre ensemble de paramètres, identifiés par un nom unique, tel que traversers.t1.hostload et traversers.t2.hostload.Un balayageUtilisez ce paramètre pour ajouter des balayages supplémentaires
traversers.t1.hostload = nIdentifie le nombre de threads (n) à utiliser pour indexer simultanément des éléments.5Testez le réglage de n en fonction de la charge que vous souhaitez appliquer à votre dépôt. Commencez par des valeurs supérieures ou égales à 10.
schedule.pollQueueIntervalSecs = sIdentifie le nombre de secondes (s) d'attente avant le nouveau sondage . Le connecteur de contenu continue d'interroger les éléments tant que l'API les renvoie dans la réponse au sondage. Lorsque la réponse au sondage est vide, le connecteur attend s secondes avant de réessayer. Ce paramètre n'est utilisé que par le service10Essayez de descendre à 1.
traverser.t1.pollRequest.statuses = status1, status2, …Spécifie les états (status1, status2, ) des éléments à indexer. Par exemple, définir status1 sur NEW_ITEM et status2 sur MODIFIED indique au balayage t1 d'indexer uniquement les éléments avec ces états.Un balayage vérifie tous les étatsEssayez d'utiliser différents balayages pour interroger différents états.

Pour en savoir plus sur les paramètres du fichier de configuration, consultez Paramètres de configuration fournis par Google.

Interruptions ou interruptions du SDK lors de l'importation de fichiers volumineux

Si vous subissez un délai d'inactivité du SDK ou des interruptions lors de l'importation de fichiers volumineux, spécifier un délai plus long en utilisant traverser.timeout=s (où s = nombre de secondes). Cette valeur identifie la durée pendant laquelle les threads doivent traiter un élément. Le délai avant expiration par défaut dans le SDK est de 60 secondes pour les fils de discussion de balayage. De plus, si vous recevez des requêtes API individuelles , utilisez les méthodes suivantes pour augmenter ces valeurs:

Paramètre de délai avant expiration de la requête Description Par défaut
indexingService.connectTimeoutSeconds Délai d'expiration de la connexion pour l'indexation des requêtes API. 120 secondes.
indexingService.readTimeoutSeconds Délai de lecture pour l'indexation des requêtes API. 120 secondes.