커넥터 설정 미세 조정

Google Cloud Search SDK에는 모든 커넥터에서 사용되는 Google 제공 구성 매개변수가 여러 개 포함되어 있습니다. 이러한 설정을 조정하는 방법을 알면 데이터 색인 생성이 크게 간소화될 수 있습니다. 이 가이드에는 색인 생성 중에 표시될 수 있는 몇 가지 문제와 이를 해결하는 데 사용되는 설정이 나와 있습니다.

FullTraversalConnector의 색인 생성 처리량이 낮음

다음 표에는 FullTraversalConnector의 처리량을 개선하기 위한 구성 설정이 나와 있습니다.

설정 설명 기본 계정 시도할 구성 변경
traverse.partitionSize 추가 APIOperation()를 가져오기 전에 일괄 처리할 ApiOperation() 수입니다. SDK는 추가 항목을 가져오기 전에 현재 파티션이 처리될 때까지 기다립니다. 이 설정은 가용 메모리 용량에 종속됩니다. 50 또는 100과 같이 파티션 크기가 비교적 작은 경우 필요한 메모리 용량도 더 적지만 SDK를 대신하여 더 많이 대기합니다. 50 사용 가능한 메모리가 많으면 partitionSize를 1, 000 이상으로 늘려보세요.
batch.batchSize 함께 일괄 처리할 요청의 수. 파티션 나누기 후 SDK는 파티션에서 모든 일괄 처리 요청이 처리될 때까지 대기합니다. 일괄 처리의 크기가 클수록 더 긴 대기 시간이 필요합니다. 10 배치 크기를 줄입니다.
batch.maxActiveBatches 허용 가능한 동시 실행 일괄 처리의 수. 20 batchSize을 낮추면 다음 수식에 따라 maxActiveBatches를 상단으로 올려야 합니다.

maxActiveBatches = (partitionSize / batchSize) + 50 예를 들어 partititionSize이 1, 000이고 batchSize가 5이면 maxActiveBatches는 250이어야 합니다. 추가 50은 재시도 요청을 위한 버퍼입니다. 이렇게 늘리면 커넥터가 모든 요청을 차단 없이 일괄 처리하도록 합니다.
traverse.threadPoolSize 병렬 처리를 위해 커넥터가 생성하는 스레드의 수. 단일 반복자는 작업 (일반적으로 RepositoryDoc 객체)을 순차적으로 가져오지만 API 호출은 threadPoolSize 수의 스레드를 사용하여 동시에 처리합니다. 각 스레드는 한 번에 하나의 항목을 처리합니다. 기본값 50은 동시에 최대 50개의 항목만 처리하며 개별 항목을 처리하는 데 약 4초가 소요됩니다(색인 생성 요청 포함). 50 threadPoolSize을 10의 배수만큼 높여보세요.

마지막으로 setRequestMode() 메서드를 사용하여 API 요청 모드 (ASYNCHRONOUS 또는 SYNCHRONOUS)를 변경해 보세요.

구성 파일 매개변수에 대한 자세한 내용은 Google에서 제공하는 구성 매개변수를 참조하세요.

ListTraversalConnector의 색인 생성 처리량이 낮음

ListTraversalConnnector를 구현하는 커넥터는 기본적으로 단일 순회자를 사용하여 항목의 색인을 생성합니다. 색인 생성 처리량을 늘리려면 특정 항목 상태 (NEW_ITEM, MODIFIED 등)에 중점을 둔 자체 구성이 있는 여러 개의 순회자를 각각 만들면 됩니다. 다음 표에는 처리량 개선을 위한 구성 설정이 나와 있습니다.

.
설정설명기본 계정시도할 구성 변경
repository.traversers = t1, t2, t3, ...t1, t2, t3, ...이 각각의 고유한 이름인 하나 이상의 개별 순회자를 만듭니다. 이름이 지정된 각 순회자에는 traversers.t1.hostloadtraversers.t2.hostload와 같은 순회자의 고유한 이름을 사용하여 식별되는 일련의 자체 설정이 있습니다.순회자 하나이 설정을 사용하여 부가적인 추가 순회자를 추가합니다.
traversers.t1.hostload = n동시에 항목의 색인을 생성하는 데 사용할 스레드 수(n)를 식별합니다.5저장소에 적용할 부하의 양을 기반으로 n를 미세 조정해 봅니다. 10 이상의 값부터 시작합니다.
schedule.pollQueueIntervalSecs = s다시 폴링하기 전에 대기할 초 수(s)를 식별합니다 . 콘텐츠 커넥터는 API가 폴 응답에서 항목을 반환하는 한 계속해서 항목을 폴링합니다. 폴 응답이 비어 있는 경우 커넥터는 다시 시도하기 전에 s초 동안 대기합니다. 이 설정은 ListingConnector에만 사용됩니다.101로 낮춥니다.
traverser.t1.pollRequest.statuses = status1, status2, …색인을 생성할 항목의 상태(status1, status2, )를 지정합니다. 예를 들어 status1NEW_ITEM로, status2MODIFIED로 설정하면 순회자 t1가 이러한 상태의 항목만 색인을 생성하도록 지시합니다.하나의 순회자가 모든 상태를 확인합니다.다양한 상태에 대해 다양한 순회자 폴링을 사용하여 실험합니다.

구성 파일 매개변수에 대한 자세한 내용은 Google에서 제공하는 구성 매개변수를 참조하세요.

대용량 파일 업로드 중 SDK 시간 초과 또는 중단

대용량 파일을 업로드하는 동안 SDK 시간 초과 또는 중단이 발생하면 traverser.timeout=s(s = 초 수)을 사용하여 더 큰 제한 시간을 지정합니다. 이 값은 작업자 스레드가 항목을 처리해야 하는 시간을 식별합니다. 순회자 스레드의 기본 제한 시간은 SDK의 60초입니다. 또한 개별 API 요청 시간이 초과되는 경우 다음 메서드를 사용하여 요청 제한 시간 값을 늘리세요.

요청 제한 시간 매개변수 설명 기본 계정
indexingService.connectTimeoutSeconds API 요청 색인 생성의 연결 제한 시간 120초
indexingService.readTimeoutSeconds API 요청 색인 생성의 읽기 제한 시간 120초