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:
Ustawienie | Opis | Domyślny | Zmiana 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.hostload | Jeden traverser | Użyj tego ustawienia, aby dodać dodatkowe traverscze |
traversers.t1.hostload = n | Określa liczbę wątków (n) używanych do jednoczesnego indeksowania elementów. | 5 | Eksperymentuj 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 = s | Okreś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 ListingConnector | 10 | Spró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 stany | Eksperymentuj 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. |