Einstellungen für Connector anpassen

Das Google Cloud Search SDK enthält mehrere von Google bereitgestellte Konfigurationsparameter, die von allen Connectors verwendet werden. Diese Einstellungen können die Indexierung von Daten erheblich optimieren. In diesem Leitfaden werden verschiedene Probleme aufgeführt, die während der Indexierung auftreten können, sowie die Einstellungen, mit denen sie behoben werden.

Niedriger Indexdurchsatz für FullTraversalConnector

In der folgenden Tabelle sind die Konfigurationseinstellungen aufgeführt, um den Durchsatz für einen FullTraversalConnector zu verbessern:

Einstellung Beschreibung Standard Mögliche Konfigurationsänderung
traverse.partitionSize Die Anzahl von ApiOperation(), die in Batches verarbeitet werden sollen, bevor weitere APIOperation() abgerufen werden. Das SDK wartet, bis die aktuelle Partition verarbeitet wurde, bevor weitere Elemente abgerufen werden. Diese Einstellung hängt von der verfügbaren Speichermenge ab. Kleinere Partitionsgrößen, z. B. 50 oder 100, erfordern weniger Arbeitsspeicher, aber dafür mehr Zeit für das SDK. 50 Wenn viel Arbeitsspeicher verfügbar ist, erhöhen Sie partitionSize auf 1.000 oder mehr.
batch.batchSize Die Anzahl der in einem Batch 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 Verringern Sie die Batchgröße.
batch.maxActiveBatches Anzahl der zulässigen gleichzeitig ausgeführten Batches. 20 Wenn Sie batchSize senken, sollten Sie maxActiveBatches gemäß der folgenden Formel erhöhen:

maxActiveBatches = (partitionSize / batchSize) + 50. Beispiel: Wenn der Wert für partititionSize 1.000 ist und der Wert für batchSize 5, sollte der Wert für 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 zu blockieren.
traverse.threadPoolSize Anzahl der Threads, die vom Connector für die parallele Verarbeitung erstellt werden. Ein einzelner Iterator ruft Vorgänge (in der Regel RepositoryDoc-Objekte) seriell ab, die API-Aufrufe werden jedoch parallel mit der Anzahl von threadPoolSize Threads verarbeitet. In jedem Thread wird jeweils nur ein Element verarbeitet. Bei der Standardeinstellung 50 werden maximal 50 Elemente gleichzeitig verarbeitet. Die Verarbeitung eines einzelnen Elements (einschließlich der Indexierungsanfrage) dauert ungefähr 4 Sekunden. 50 Erhöhen Sie threadPoolSize um ein Vielfaches von 10.

Außerdem haben Sie die Möglichkeit, den API-Anfragemodus (ASYNCHRONOUS oder SYNCHRONOUS) mit der Methode setRequestMode() zu ändern.

Weitere Informationen zu Konfigurationsdateiparametern finden Sie unter Von Google bereitgestellte Konfigurationsparameter.

Niedriger Indexierungsdurchsatz für ListTraversalConnector

Standardmäßig verwendet ein Connector, der den ListTraversalConnnector implementiert, einen einzigen Durchlauf, um Ihre Elemente zu indexieren. Wenn Sie den Durchsatz der Indexierung erhöhen möchten, können Sie mehrere Durchsucher mit jeweils eigener Konfiguration erstellen, die sich auf bestimmte Elementstatus (NEW_ITEM, MODIFIED usw.) konzentrieren. In der folgenden Tabelle sind die Konfigurationseinstellungen zur Verbesserung des Durchsatzes aufgeführt:

.
EinstellungBeschreibungStandardMögliche Konfigurationsänderung
repository.traversers = t1, t2, t3, ...Erstellt einen oder mehrere einzelne Durchsucher, wobei t1, t2, t3, ... der eindeutige Name jedes einzelnen Traversers ist. Jeder Durchsucher mit Namen hat eigene Einstellungen, die durch den eindeutigen Namen des Durchsuchers identifiziert werden, z. B. traversers.t1.hostload und traversers.t2.hostload.One TraverserVerwenden Sie diese Einstellung, um zusätzliche Durchsucher hinzuzufügen.
traversers.t1.hostload = nGibt die Anzahl der Threads (n) an, die zum gleichzeitigen Indexieren von Elementen verwendet werden sollen.5Versuchen Sie, n anhand der Last anzupassen, die Sie Ihr Repository in Anspruch nehmen möchten. Beginnen Sie mit Werten ab 10.
schedule.pollQueueIntervalSecs = sGibt die Anzahl der Sekunden an, die gewartet werden soll (s), bevor eine erneute Abfrage durchgeführt wird . Der Inhaltsconnector ruft weiterhin Elemente ab, solange die API Elemente in der Umfrageantwort zurückgibt. Wenn die Umfrageantwort leer ist, wartet der Connector s Sekunden, bevor er es noch einmal versucht. Diese Einstellung wird nur vom ListConnector verwendet10Versuchen Sie es mit einer Senkung 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, wird der Durchsucher t1 angewiesen, nur Elemente mit diesem Status zu indexieren.One Traverser prüft alle StatusExperimentieren Sie mit verschiedenen Durchsuchern, die unterschiedliche Status abrufen.

Weitere Informationen zu Konfigurationsdateiparametern finden Sie unter Von Google bereitgestellte Konfigurationsparameter.

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

Wenn beim Hochladen großer Dateien eine Zeitüberschreitung beim SDK auftritt oder es Unterbrechungen gibt, geben Sie mit traverser.timeout=s ein größeres Zeitlimit an (wobei s = Anzahl der Sekunden ist). Dieser Wert gibt an, wie lange Worker-Threads zur Verarbeitung eines Elements benötigen. Das Standardzeitlimit im SDK beträgt 60 Sekunden für Durchlauf-Threads. Wenn für einzelne API-Anfragen Zeitüberschreitungen auftreten, können Sie außerdem die folgenden Methoden verwenden, um die Zeitüberschreitungswerte für Anfragen zu erhöhen:

Zeitüberschreitungsparameter für Anfrage Beschreibung Standard
indexingService.connectTimeoutSeconds Zeitüberschreitung beim Herstellen einer Verbindung zum Indexieren von API-Anfragen. 120 Sekunden.
indexingService.readTimeoutSeconds Lesezeitlimit für Indexierungs-API-Anfragen. 120 Sekunden.