Einstellungen für Connector anpassen

Das Google Cloud Search SDK enthält mehrere von Google bereitgestellte Konfigurationsparameter, die von allen Connectors verwendet werden. Wenn Sie wissen, wie Sie diese Einstellungen optimieren, lässt sich die Indexierung von Daten erheblich optimieren. In diesem Leitfaden werden verschiedene Probleme aufgeführt, die bei der Indexierung auftreten können, sowie die Einstellungen, mit denen sie behoben werden.

Der Indexierungsdurchsatz ist für FullTraversalConnector niedrig

In der folgenden Tabelle sind die Konfigurationseinstellungen aufgeführt, mit denen der Durchsatz für einen FullTraversalConnector verbessert werden kann:

Einstellung Beschreibung Standard Zu testende Konfigurationsänderung
traverse.partitionSize Die Anzahl der ApiOperation(), die in Batches verarbeitet werden, bevor weitere APIOperation() abgerufen werden. Das SDK wartet, bis die aktuelle Partition verarbeitet wurde, bevor weitere Elemente abgerufen werden. Diese Einstellung hängt vom verfügbaren Arbeitsspeicher ab. Kleinere Partitionsgrößen wie 50 oder 100 erfordern weniger Arbeitsspeicher, aber es dauert länger, bis das SDK die Daten verarbeitet. 50 Wenn Sie viel Arbeitsspeicher haben, erhöhen Sie partitionSize auf mindestens 1.000.
batch.batchSize Die Anzahl der Anfragen, die in einem Batch zusammengefasst werden. Nach Abschluss der Partitionierung wartet das SDK, bis alle Batchanfragen aus der Partition verarbeitet wurden. Bei größeren Batches dauert es länger. 10 Versuchen Sie, die Batchgröße zu verringern.
batch.maxActiveBatches Anzahl der zulässigen gleichzeitig ausgeführten Batches. 20 Wenn Sie batchSize senken, sollten Sie maxActiveBatches gemäß dieser Formel erhöhen:

maxActiveBatches = (partitionSize / batchSize) + 50. Wenn partititionSize beispielsweise 1.000 und batchSize 5 ist, sollte maxActiveBatches 250 sein. Die zusätzlichen 50 sind ein Puffer für Wiederholungsanfragen. Durch diese Erhöhung kann der Connector alle Anfragen ohne Blockierung in einem Batch senden.
traverse.threadPoolSize Anzahl der Threads, die der Connector erstellt, um eine parallele Verarbeitung zu ermöglichen. Ein einzelner Iterator ruft Vorgänge (in der Regel RepositoryDoc Objekte) nacheinander ab, die API-Aufrufe werden jedoch parallel mit threadPoolSize Threads verarbeitet. In jedem Thread wird jeweils ein Element verarbeitet. Bei der Standardeinstellung von 50 werden maximal 50 Elemente gleichzeitig verarbeitet. Die Verarbeitung eines einzelnen Elements dauert etwa 4 Sekunden (einschließlich der Indexierungsanfrage). 50 Versuchen Sie, threadPoolSize um ein Vielfaches von 10 zu erhöhen.

Mit der Methode setRequestMode() kannst du den API-Anfragemodus ändern (ASYNCHRONOUS oder SYNCHRONOUS).

Weitere Informationen zu Konfigurationsdateiparametern finden Sie in diesem Artikel.

Der Indexierungsdurchsatz ist für ListTraversalConnector niedrig

Standardmäßig verwendet ein Connector, der den ListTraversalConnector implementiert, einen einzelnen Durchsucher, um Ihre Elemente zu indexieren. Um den Indexierungsdurchsatz zu erhöhen, können Sie mehrere Durchläufe mit jeweils einer eigenen Konfiguration erstellen, die sich auf bestimmte Artikelstatus (NEW_ITEM, MODIFIED usw.) konzentrieren. In der folgenden Tabelle sind Konfigurationseinstellungen aufgeführt, mit denen Sie den Durchsatz verbessern können:

.
EinstellungBeschreibungStandardZu testende Konfigurationsänderung
repository.traversers = t1, t2, t3, ...Erstellt eine oder mehrere einzelne Traversen, wobei t1, t2, t3, ... der eindeutige Name der einzelnen Traversen ist. Jeder benannte Durchschreiter hat eigene Einstellungen, die anhand des eindeutigen Namens des Durchschreiters identifiziert werden, z. B. traversers.t1.hostload und traversers.t2.hostload.Ein TraverserMit dieser Einstellung können Sie zusätzliche Durchsuchern hinzufügen.
traversers.t1.hostload = nGibt die Anzahl der Threads (n) an, die zum gleichzeitigen Indexieren von Elementen verwendet werden sollen.5Passen Sie n an die gewünschte Auslastung Ihres Repositories an. Beginnen Sie mit Werten von 10 oder höher.
schedule.pollQueueIntervalSecs = sGibt die Anzahl der Sekunden an, s, die gewartet werden soll, bevor eine weitere Abfrage erfolgt . Der Content-Connector führt weiterhin Umfragen durch, solange die API Elemente in der Umfrageantwort zurückgibt. Wenn die Antwort der Umfrage leer ist, wartet der Connector s Sekunden, bevor er es noch einmal versucht. Diese Einstellung wird nur vom ListingConnector verwendet.10Versuchen Sie, den Wert auf „1“ zu senken.
traverser.t1.pollRequest.statuses = status1, status2, …Gibt die Status status1, status2 und der zu indexierenden Elemente an. Wenn Sie beispielsweise status1 auf NEW_ITEM und status2 auf MODIFIED festlegen, wird der Durchschreiter t1 angewiesen, nur Elemente mit diesen Status zu indexieren.Ein Durchschreiter prüft alle StatusTesten Sie, ob verschiedene Traverser nach verschiedenen Status fragen.

Weitere Informationen zu Konfigurationsdateiparametern finden Sie in diesem Artikel.

SDK-Zeitüberschreitungen oder Unterbrechungen beim Hochladen großer Dateien

Wenn beim Hochladen großer Dateien ein SDK-Zeitlimit auftritt oder Unterbrechungen auftreten, geben Sie mit traverser.timeout=s ein größeres Zeitlimit an (s = Anzahl der Sekunden). Dieser Wert gibt an, wie lange Worker-Threads für die Verarbeitung eines Elements benötigen. Das Standardzeitlimit im SDK beträgt 60 Sekunden für Traverser-Threads. Wenn einzelne API-Anfragen ein Zeitlimit erreichen, können Sie die Zeitüberschreitung mit den folgenden Methoden verlängern:

Parameter „Zeitüberschreitung bei Anfrage“ Beschreibung Standard
indexingService.connectTimeoutSeconds Zeitüberschreitung bei der Verbindung für Indexing API-Anfragen. 120 Sekunden.
indexingService.readTimeoutSeconds Lesezeitlimit für Indexing API-Anfragen. 120 Sekunden.