Dostosowywanie ustawień oprogramowania sprzęgającego

Pakiet SDK Google Cloud Search zawiera kilka dostarczonych przez Google parametrów konfiguracji, które są używane przez wszystkie oprogramowania sprzęgające. Umiejętność dostosowywania tych ustawień może znacznie usprawnić indeksowanie danych. W tym przewodniku znajdziesz listę problemów, które mogą wystąpić podczas indeksowania, oraz ustawienia, które pozwalają je rozwiązać.

Niska przepustowość indeksowania w przypadku elementu FullTraversalConnector

W tej tabeli znajdziesz ustawienia konfiguracji, które zwiększają przepustowość w przypadku FullTraversalConnector:

Ustawienie Opis Domyślny Zmiana konfiguracji do wypróbowania
traverse.partitionSize Liczba ApiOperation(), które mają być przetwarzane w partiach przed pobraniem dodatkowych APIOperation(). SDK czeka na przetworzenie bieżącej partycji, zanim pobierze dodatkowe elementy. To ustawienie zależy od ilości dostępnej pamięci. Mniejsze rozmiary partycji, np. 50 lub 100, wymagają mniej pamięci, ale pakiet SDK musi dłużej czekać. 50 Jeśli masz dużo dostępnej pamięci, spróbuj zwiększyć wartość partitionSize do 1000 lub więcej.
batch.batchSize Liczba żądań zgrupowanych w pakiet. Po zakończeniu partycjonowania pakiet SDK czeka, aż wszystkie żądania wsadowe z partycji zostaną przetworzone. Większe partie wymagają dłuższego oczekiwania. 10 Spróbuj zmniejszyć rozmiar partii.
batch.maxActiveBatches Liczba dozwolonych równocześnie wykonywanych partii. 20 Jeśli zmniejszysz wartość batchSize, zwiększ wartość maxActiveBatches zgodnie z tym wzorem:

maxActiveBatches = (partitionSize / batchSize) + 50. Jeśli na przykład wartość partititionSize wynosi 1000, a wartość batchSize – 5, wartość maxActiveBatches powinna wynosić 250. Dodatkowe 50 to bufor na potrzeby ponawiania żądań. Ten wzrost umożliwia oprogramowaniu sprzęgającemu grupowanie wszystkich żądań bez blokowania.
traverse.threadPoolSize Liczba wątków tworzonych przez łącznik, aby umożliwić przetwarzanie równoległe. Pojedynczy iterator pobiera operacje (zwykle obiekty RepositoryDoc) szeregowo, ale wywołania interfejsu API są przetwarzane równolegle przy użyciu threadPoolSize wątków. Każdy wątek przetwarza 1 element naraz. Domyślna wartość 50 oznacza, że jednocześnie przetwarzanych jest maksymalnie 50 elementów, a przetworzenie pojedynczego elementu (w tym żądania indeksowania) zajmuje około 4 sekund. 50 Spróbuj zwiększyć wartość threadPoolSize o wielokrotność 10.

Na koniec rozważ użycie metody setRequestMode(), aby zmienić tryb żądania interfejsu API (ASYNCHRONOUS lub SYNCHRONOUS).

Więcej informacji o parametrach pliku konfiguracyjnego znajdziesz w artykule Parametry konfiguracyjne dostarczane przez Google.

Niska przepustowość indeksowania w przypadku ListTraversalConnector

Domyślnie oprogramowanie sprzęgające, które implementuje interfejs ListTraversalConnector, używa jednego modułu przechodzenia do indeksowania elementów. Aby zwiększyć przepustowość indeksowania, możesz utworzyć kilka modułów przechodzenia, z których każdy będzie miał własną konfigurację skupiającą się na określonych stanach elementów (NEW_ITEM, MODIFIED itp.). W tabeli poniżej znajdziesz ustawienia konfiguracji, które pozwolą zwiększyć przepustowość:

.
UstawienieOpisDomyślnyZmiana konfiguracji do wypróbowania
repository.traversers = t1, t2, t3, ...Tworzy co najmniej 1 osobny moduł sprawdzający, gdzie t1, t2, t3, ... to unikalna nazwa każdego z nich. Każdy nazwany moduł sprawdzający ma własny zestaw ustawień, które są identyfikowane za pomocą unikalnej nazwy modułu sprawdzającego, np. traversers.t1.hostloadtraversers.t2.hostload.1 przesuwnicaTo ustawienie służy do dodawania dodatkowych narzędzi do indeksowania.
traversers.t1.hostload = nOkreśla liczbę wątków n, które mają być używane do jednoczesnego indeksowania elementów.5Eksperymentuj z dostrajaniem n w zależności od tego, jak duże obciążenie chcesz nałożyć na repozytorium. Zacznij od wartości 10 lub większych.
schedule.pollQueueIntervalSecs = sOkreśla liczbę sekund (s), które należy odczekać przed ponownym odpytaniem . Łącznik treści nadal wysyła zapytania o elementy, dopóki interfejs API zwraca elementy w odpowiedzi na zapytanie. Gdy odpowiedź na sondowanie jest pusta, łącznik czeka s sekund, zanim spróbuje ponownie. To ustawienie jest używane tylko przez ListingConnector.10Spróbuj zmniejszyć tę wartość do 1.
traverser.t1.pollRequest.statuses = status1, status2, …Określa stany status1, status2, elementów do zindeksowania. Na przykład ustawienie status1 na NEW_ITEMstatus2 na MODIFIED powoduje, że narzędzie t1 indeksuje tylko elementy o tych stanach.Jeden moduł sprawdzający wszystkie stanyEksperymentuj z różnymi stanami, o które będą odpytywać różne moduły przechodzenia.

Więcej informacji o parametrach pliku konfiguracyjnego znajdziesz w artykule Parametry konfiguracyjne dostarczane przez Google.

Przekroczenie limitu czasu lub przerwanie działania pakietu SDK podczas przesyłania dużych plików

Jeśli podczas przesyłania dużych plików wystąpi przekroczenie limitu czasu lub przerwanie działania pakietu SDK, określ dłuższy czas oczekiwania za pomocą polecenia traverser.timeout=s (gdzie s to liczba sekund). Ta wartość określa, jak długo wątki robocze muszą przetwarzać element. Domyślny limit czasu w pakiecie SDK to 60 sekund w przypadku wątków przechodzących. Jeśli poszczególne żądania API przekraczają limit czasu, użyj tych metod, aby zwiększyć wartości limitu czasu żądania:

Parametr przekroczenia limitu czasu żądania Opis Domyślny
indexingService.connectTimeoutSeconds Limit czasu połączenia w przypadku żądań interfejsu Indexing API. 120 sekund.
indexingService.readTimeoutSeconds Limit czasu odczytu w przypadku żądań do interfejsu Indexing API. 120 sekund.