커넥터 설정 미세 조정

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초