Dostosowywanie ustawień oprogramowania sprzęgającego

Pakiet SDK Google Cloud Search zawiera kilka konfiguracji dostarczonych przez Google parametrów używanych przez wszystkie oprogramowanie sprzęgające. Znajomość odpowiednich ustawień znacznie usprawniają indeksowanie danych. W tym przewodniku wymieniono kilka problemów, które które mogą pojawiać się podczas indeksowania i jakie ustawienia są używane do ich rozwiązywania.

Niska przepustowość indeksowania dla usługi FullTraversalConnector

W tabeli poniżej znajdziesz ustawienia konfiguracji pozwalające zwiększyć przepustowość FullTraversalConnector

Ustawienie Opis Domyślny 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 tutaj: Parametry konfiguracji udostępnione przez Google.

Niska przepustowość indeksowania dla oprogramowania ListTraversalConnector

Domyślnie oprogramowanie sprzęgające, które implementuje interfejs ListTraversalConnnector, używa parametru do indeksowania elementów. Aby zwiększyć przepustowość indeksowania, możesz: Utwórz wiele modułów przemierzania, każdy z własną konfiguracją skupiającą się na konkretnych stany elementów (NEW_ITEM, MODIFIED itd.). Poniższa tabela zawiera ustawienia konfiguracji w celu zwiększenia przepustowości:

.
UstawienieOpisDomyślnyZmiana 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 tutaj: 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 większy limit czasu za pomocą traverser.timeout=s (gdzie s = liczba sekund). Ta wartość określa czas trwania instancji roboczej musi przetworzyć element. Domyślny limit czasu w pakiecie SDK wynosi 60 sekund dla wątków przemierzających. Ponadto, jeśli występują pojedyncze żądania do interfejsu API, , użyj tych metod, aby zwiększyć limity czasu żądania:

Parametr limitu czasu żądania Opis Domyślny
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.