Einstellungen für Connector anpassen

Das Google Cloud Search SDK enthält mehrere von Google bereitgestellte Konfigurationsparameter, die von allen Connectors verwendet werden. Zu wissen, wie diese Einstellungen optimiert werden, kann die Indexierung von Daten erheblich optimieren. In diesem Leitfaden werden verschiedene Probleme, die bei der Indexierung auftreten können, und die Einstellungen zu deren Behebung aufgeführt.

Niedriger Indexierungsdurchsatz für FullTraversalConnector

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

Einstellung Beschreibung Standard Konfigurationsänderung zum Ausprobieren
traverse.partitionSize Die Anzahl von ApiOperation(), die in Batches verarbeitet werden sollen, bevor zusätzliche 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, dafür aber mehr Wartezeiten durch das SDK. 50 Wenn Sie viel Arbeitsspeicher haben, versuchen Sie, partitionSize auf mindestens 1.000 zu erhöhen.
batch.batchSize Die Anzahl der zusammengefassten Anfragen. Am Ende der Partitionierung wartet das SDK, bis alle Batchanfragen von der Partition verarbeitet wurden. Größere Batches erfordern eine längere Wartezeit. 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äß der folgenden Formel anheben:

maxActiveBatches = (partitionSize / batchSize) + 50. Beispiel: Wenn Ihre partititionSize 1.000 und Ihre batchSize 5 ist, sollte Ihre maxActiveBatches 250 sein. Die zusätzlichen 50 sind ein Puffer für Wiederholungsanfragen. Durch diese Erhöhung kann der Connector alle Anfragen in Batches zusammenfassen, ohne sie zu blockieren.
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, aber die API-Aufrufe werden mit einer Anzahl von threadPoolSize Threads parallel verarbeitet. In jedem Thread wird jeweils ein Element verarbeitet. Mit der Standardeinstellung „50“ werden maximal 50 Elemente gleichzeitig verarbeitet. Die Verarbeitung eines einzelnen Elements (einschließlich der Indexierungsanfrage) dauert ungefähr 4 Sekunden. 50 Versuchen Sie, threadPoolSize um ein Vielfaches von 10 zu erhöhen.

Abschließend können Sie die Methode setRequestMode() verwenden, um den API-Anfragemodus (entweder ASYNCHRONOUS oder SYNCHRONOUS) zu ändern.

Weitere Informationen zu den Parametern für Konfigurationsdateien finden Sie unter Von Google bereitgestellte Konfigurationsparameter.

Niedriger Indexierungsdurchsatz für ListTraversalConnector

Standardmäßig verwendet ein Connector, der ListTraversalConnnector implementiert, einen einzelnen Durchlauf, um Ihre Elemente zu indexieren. Sie können mehrere Durchläufe erstellen, die jeweils eine eigene Konfiguration haben und sich auf bestimmte Elementstatus (NEW_ITEM, MODIFIED usw.) konzentrieren, um den Indexierungsdurchsatz zu erhöhen. In der folgenden Tabelle sind die Konfigurationseinstellungen zur Verbesserung des Durchsatzes aufgeführt:

.
EinstellungBeschreibungStandardKonfigurationsänderung zum Ausprobieren
repository.traversers = t1, t2, t3, ...Erstellt einen oder mehrere einzelne Durchläufe, wobei t1, t2, t3, ... der eindeutige Name jedes Durchlaufs ist. Jeder Benannte Durchlaufer hat seine eigenen Einstellungen, die durch den eindeutigen Namen des Durchläufers identifiziert werden, z. B. traversers.t1.hostload und traversers.t2.hostload.Ein DurchlauferMit dieser Einstellung können Sie zusätzliche Durchläufer hinzufügen
traversers.t1.hostload = nGibt die Anzahl der Threads (n) an, die zum gleichzeitigen Indexieren von Elementen verwendet werden sollen.5Experimentieren Sie mit der Abstimmung von n auf der Grundlage der Last, die Sie für Ihr Repository einsetzen möchten. Beginnen Sie mit Werten ab 10.
schedule.pollQueueIntervalSecs = sGibt an, wie viele Sekunden vor einem erneuten Abruf gewartet werden soll (s). Der Inhalts-Connector fragt weiterhin Elemente ab, solange die API Elemente in der Abfrageantwort zurückgibt. Wenn die Abfrageantwort leer ist, wartet der Connector s Sekunden, bevor er es noch einmal versucht. Diese Einstellung wird nur vom ListingConnector verwendet10Senken Sie den Wert auf 1.
traverser.t1.pollRequest.statuses = status1, status2, …Gibt die Status (status1, status2, ) der zu indexierenden Elemente an. Wenn Sie beispielsweise status1 auf NEW_ITEM und status2 auf MODIFIED setzen, weisen Sie den Traverser t1 an, nur Elemente mit diesem Status zu indexieren.Ein Traverser prüft alle StatusExperimentieren Sie mit unterschiedlichen Durchläufern, die verschiedene Status abfragen.

Weitere Informationen zu den Parametern für Konfigurationsdateien finden Sie unter Von Google bereitgestellte Konfigurationsparameter.

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

Wenn beim Hochladen großer Dateien SDK-Zeitüberschreitungen 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 haben. Das Standardzeitlimit im SDK beträgt für Durchlauf-Threads 60 Sekunden. Wenn es zu einer Zeitüberschreitung bei einzelnen API-Anfragen kommt, können Sie außerdem die folgenden Methoden verwenden, um die Werte für die Zeitüberschreitung bei Anfragen zu erhöhen:

Zeitüberschreitungsparameter für Anfrage Beschreibung Standard
indexingService.connectTimeoutSeconds Verbindungszeitlimit für die Indexierung von API-Anfragen. 120 Sekunden.
indexingService.readTimeoutSeconds Zeitüberschreitung beim Lesen von API-Anfragen zur Indexierung. 120 Sekunden.