Dostosowywanie ustawień oprogramowania sprzęgającego

Pakiet Google Cloud Search SDK zawiera kilka parametrów konfiguracyjnych dostarczanych przez Google, które są używane przez wszystkie oprogramowanie sprzęgające. Umiejętność dostosowania tych ustawień może znacznie usprawnić indeksowanie danych. Ten przewodnik zawiera listę kilku problemów, które mogą pojawić się podczas indeksowania, oraz ustawień, które pozwalają je rozwiązać.

Niska przepustowość indeksowania dla usługi FullTraversalConnector

Poniższa tabela zawiera ustawienia konfiguracji pozwalające zwiększyć przepustowość na potrzeby FullTraversalConnector:

Ustawienie Opis Domyślne Zmiana konfiguracji do wypróbowania
traverse.partitionSize Liczba elementów typu ApiOperation() do przetworzenia partiami przed pobraniem kolejnych APIOperation(). Pakiet SDK czeka na przetworzenie bieżącej partycji przed pobraniem dodatkowych elementów. To ustawienie zależy od ilości dostępnej pamięci. Mniejsze rozmiary partycji, na przykład 50 lub 100, wymagają mniej pamięci, ale więcej czasu oczekiwania w imieniu pakietu SDK. 50 Jeśli masz dużo wolnej pamięci, zwiększ partitionSize do co najmniej 1000.
batch.batchSize Liczba żądań zbiorczych. Po zakończeniu partycjonowania pakiet SDK czeka na przetworzenie wszystkich żądań zbiorczych z partycji. Większe porcje wymagają dłuższego oczekiwania. 10 Spróbuj zmniejszyć rozmiar wsadu.
batch.maxActiveBatches Liczba dozwolonych równocześnie wykonywanych wsadów. 20 Jeśli zmniejszysz batchSize, musisz podnieść wartość maxActiveBatches zgodnie z tym wzorem:

maxActiveBatches = (partitionSize / batchSize) + 50. Jeśli na przykład partititionSize to 1000, a batchSize to 5, maxActiveBatches powinien wynosić 250. Dodatkowe 50 to bufor dla ponownych żądań. To zwiększenie umożliwia oprogramowaniu sprzęgającemu grupowanie wszystkich żądań bez blokowania.
traverse.threadPoolSize Liczba wątków, które tworzy oprogramowanie sprzęgające, aby umożliwić przetwarzanie równoległe. Pojedynczy iterator pobiera operacje (zwykle obiekty RepositoryDoc) szeregowo, ale wywołania interfejsu API są przetwarzane równolegle z wykorzystaniem threadPoolSize wątków. Każdy wątek przetwarza jeden element naraz. Wartość domyślna 50 umożliwia przetworzenie maksymalnie 50 elementów jednocześnie. Przetworzenie pojedynczego elementu (łącznie z prośbą o zindeksowanie) trwa około 4 sekund. 50 Spróbuj zwiększyć threadPoolSize przez wielokrotność 10.

Rozważ też użycie metody setRequestMode(), aby zmienić tryb żądania do interfejsu API (ASYNCHRONOUS lub SYNCHRONOUS).

Więcej informacji o parametrach pliku konfiguracji znajdziesz w artykule Parametry konfiguracji udostępnione przez Google.

Niska przepustowość indeksowania dla oprogramowania ListTraversalConnector

Domyślnie oprogramowanie sprzęgające, które implementuje protokół ListTraversalConnnector, używa pojedynczego przemierzania do indeksowania elementów. Aby zwiększyć przepustowość indeksowania, możesz utworzyć większą liczbę modułów przemierzających, każdy z własną konfiguracją koncentrującą się na określonych stanach elementów (NEW_ITEM, MODIFIED itd.). W tabeli poniżej znajdziesz ustawienia konfiguracji pozwalające zwiększyć przepustowość:

.
UstawienieOpisDomyślneZmiana konfiguracji do wypróbowania
repository.traversers = t1, t2, t3, ...Tworzy co najmniej jeden element travers, gdzie t1, t2, t3, ... to unikalna nazwa każdego z nich. Każdy nazwany przemierza ma własny zestaw ustawień określanych na podstawie jego unikalnej nazwy, np. traversers.t1.hostload i traversers.t2.hostloadJeden traverserUżyj tego ustawienia, aby dodać dodatkowe traverscze
traversers.t1.hostload = nOkreśla liczbę wątków (n) używanych do jednoczesnego indeksowania elementów.5Eksperymentuj ze dostrajaniem usługi n w zależności od tego, jakie obciążenie chcesz umieścić w repozytorium. Zacznij od wartości co najmniej 10.
schedule.pollQueueIntervalSecs = sOkreśla liczbę sekund oczekiwania (s) przed ponownym wysłaniem ankiety . Oprogramowanie sprzęgające treści nadal odpytuje elementy, dopóki interfejs API zwraca elementy w odpowiedzi na ankietę. Gdy odpowiedź ankiety jest pusta, oprogramowanie sprzęgające czeka s sekund przed ponowną próbą. To ustawienie jest używane tylko przez program ListingConnector10Spróbuj zmniejszyć do 1.
traverser.t1.pollRequest.statuses = status1, status2, …Określa stany (status1, status2, ) elementów do zindeksowania. Na przykład ustawienie status1 na NEW_ITEM i status2 na MODIFIED spowoduje, że element t1 będzie indeksował tylko elementy o określonym stanie.Jeden traverser sprawdza wszystkie stanyEksperymentuj z przeprowadzaniem ankiet badających różne stany.

Więcej informacji o parametrach pliku konfiguracji znajdziesz w artykule Parametry konfiguracji udostępnione przez Google.

Pakiet SDK przekracza limit czasu lub przerywa przesyłanie dużych plików

Jeśli podczas przesyłania dużych plików pakiet SDK napotyka czas oczekiwania lub przerywa działanie, określ dłuższy czas oczekiwania za pomocą traverser.timeout=s (gdzie s = liczba sekund). Ta wartość określa czas potrzebny na przetworzenie elementu przez wątki robocze. Domyślny czas oczekiwania w pakiecie SDK wynosi 60 sekund dla wątków przemierzania. Poza tym, jeśli występują czasem upłynięcia poszczególnych żądań do interfejsu API, możesz je zwiększyć, korzystając z poniższych metod:

Parametr limitu czasu żądania Opis Domyślne
indexingService.connectTimeoutSeconds Limit czasu połączenia dla żądań do interfejsu API indeksowania. 120 sekund.
indexingService.readTimeoutSeconds Limit czasu odczytu żądań do interfejsu API indeksowania. 120 sekund.