Pakiet SDK Google Cloud Search zawiera dostarczone przez Google parametry konfiguracyjne wszystkich łączników. Dostosowanie tych ustawień może usprawnić indeksowanie danych. W tym przewodniku znajdziesz listę typowych problemów z indeksowaniem oraz ustawień, które pomogą je rozwiązać.
Niska przepustowość indeksowania w przypadku FullTraversalConnector
W tabeli poniżej znajdziesz ustawienia, które pozwolą zwiększyć przepustowość w przypadku
FullTraversalConnector:
| Ustawienie | Opis | Domyślny | Sugerowana zmiana |
|---|---|---|---|
traverse.partitionSize |
Liczba elementów ApiOperation() przetwarzanych w partiach. Pakiet SDK czeka na zakończenie przetwarzania partycji, zanim pobierze kolejne. |
50 | Jeśli masz wystarczającą ilość pamięci, zwiększ tę wartość do 1000 lub więcej. |
batch.batchSize |
Liczba żądań grupowanych razem. | 10 | Spróbuj zmniejszyć wielkość wsadu. |
batch.maxActiveBatches |
Dozwolone równoczesne partie. | 20 | Jeśli zmniejszysz wartość batchSize, zwiększ tę wartość, używając formuły: (partitionSize / batchSize) + 50. |
traverse.threadPoolSize |
Liczba wątków do przetwarzania równoległego. | 50 | Zwiększaj tę wartość o wielokrotność 10. |
Rozważ użycie setRequestMode(), aby przełączać się między ASYNCHRONOUS i
SYNCHRONOUS trybami żądań do interfejsu API.
Niska przepustowość indeksowania w przypadku ListTraversalConnector
Domyślnie ListTraversalConnector używa jednego traversera. Aby zwiększyć przepustowość, utwórz kilka traverserów dla określonych stanów elementów (np. NEW_ITEM, MODIFIED).
| Ustawienie | Opis | Domyślny | Zmień |
|---|---|---|---|
repository.traversers | Tworzy poszczególne
traversery o unikalnych nazwach (np. t1, t2). | Jeden traverser | Dodaj więcej traverserów. |
traversers.t1.hostload | Liczba wątków do równoczesnego indeksowania elementów. | 5 | Spróbuj użyć wartości 10 lub większej. |
schedule.pollQueueIntervalSecs | Liczba sekund, które należy odczekać przed ponownym sprawdzeniem pustej kolejki. | 10 | Spróbuj zmniejszyć tę wartość do 1. |
traverser.t1.pollRequest.statuses | Stany
do indeksowania (np. NEW_ITEM). | Wszystkie | Używaj różnych traverserów dla różnych stanów. |
Limity czasu lub przerwy w pakiecie SDK
Jeśli podczas przesyłania dużych plików występują limity czasu, zwiększ limit czasu
za pomocą traverser.timeout=seconds
(wartość domyślna to 60 sekund). Możesz też zwiększyć limity czasu żądań do interfejsu API:
| Parametr | Opis | Domyślny |
|---|---|---|
indexingService.connectTimeoutSeconds |
Limit czasu połączenia dla żądań API. | 120s |
indexingService.readTimeoutSeconds |
Limit czasu odczytu dla żądań API. | 120s |