Einstellungen für Connector anpassen

Das Google Cloud Search SDK enthält verschiedene von Google bereitgestellte Parameter, die von allen Connectors verwendet werden. Zu wissen, wie diese Einstellungen optimiert werden, die Indexierung von Daten. In diesem Leitfaden werden einige Probleme aufgeführt, während der Indexierung angezeigt werden kann, und die Einstellungen, mit denen das Problem behoben wird.

Niedriger Indexierungsdurchsatz für FullTraversalConnector

In der folgenden Tabelle sind die Konfigurationseinstellungen zur Verbesserung des Durchsatzes für einen FullTraversalConnector

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 der Konfigurationsdatei finden Sie unter Von Google bereitgestellte Konfigurationsparameter

Niedriger Indexierungsdurchsatz für ListTraversalConnector

Standardmäßig verwendet ein Connector, der den ListTraversalConnnector implementiert, einen Single Traverser verwenden, um Ihre Elemente zu indexieren. Um den Indexierungsdurchsatz zu erhöhen, können Sie Erstellen Sie mehrere Durchläufe, die jeweils eine eigene Konfiguration haben und sich auf bestimmte Artikelstatus (NEW_ITEM, MODIFIED usw.). In der folgenden Tabelle sehen Sie Konfigurationseinstellungen, um den Durchsatz zu verbessern:

.
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 der Konfigurationsdatei finden Sie unter Von Google bereitgestellte Konfigurationsparameter

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

Wenn beim Hochladen großer Dateien Zeitüberschreitungen oder Unterbrechungen durch das SDK auftreten, ein größeres Zeitlimit mit traverser.timeout=s (s = Anzahl der Sekunden). Dieser Wert gibt an, wie lange müssen Threads ein Element verarbeiten. Das standardmäßige Zeitlimit im SDK beträgt 60 Sekunden für Traverser-Threads. Wenn Sie einzelne API-Anfragen können Sie mit den folgenden Methoden die Werte für die Zeitüberschreitung bei Anfragen 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.