调整连接器设置

Google Cloud Search SDK 包含 Google 提供的若干个配置参数,可供所有连接器使用。了解如何调整这些设置可以 可极大地简化数据索引过程。本指南列出了 可能会出现的问题,以及用于解决这些错误的设置。

FullTraversalConnector 的索引吞吐量较低

下表列出了可提高 FullTraversalConnector

设置 说明 默认值 可尝试的配置更改
traverse.partitionSize 在提取额外的 APIOperation() 之前要分批处理的 ApiOperation() 数量。SDK 会等到当前分区处理完毕后再提取其他项。此设置取决于可用内存量。较小的分区(例如大小为 50 或 100 的分区)需要的内存较少,但 SDK 需要等待的时间较长。 50 如果您的可用内存较多,请尝试将 partitionSize 增加到 1000 或更多。
batch.batchSize 一起进行批处理的请求数。在分区结束时,SDK 会等待分区中的所有批处理请求得到处理。批次越大,SDK 需要等待的时间就越长。 10 可尝试减小批次大小。
batch.maxActiveBatches 允许并发执行的批次数量。 20 如果您降低 batchSize,则应根据以下公式提高 maxActiveBatches

maxActiveBatches = (partitionSize / batchSize)+ 50。例如,如果您的 partititionSize 为 1000,您的 batchSize 为 5,那么您的 maxActiveBatches 应该为 250。额外的 50 个活跃批次用作重试请求的缓冲区。增加活跃批次的数量后,连接器便可批量处理所有请求而不会受到阻止。
traverse.threadPoolSize 连接器创建用于支持并行处理的线程数。单个迭代器会按顺序提取操作(通常为 RepositoryDoc 对象),但 API 会使用 threadPoolSize 的线程数并行调用进程。每个线程一次处理一个项。采用默认值 (50) 时,最多只能同时处理 50 个项,并且处理个别项(包括索引请求)大约需要 4 秒钟。 50 请尝试以 10 的倍数增加 threadPoolSize

最后,请考虑使用 setRequestMode() 方法更改 API 请求模式(ASYNCHRONOUSSYNCHRONOUS)。

有关配置文件参数的更多信息,请参阅 Google 提供的配置参数

ListTraversalConnector 的索引吞吐量较低

默认情况下,实现 ListTraversalConnnector 的连接器使用 为您的项编制索引。如需提高索引吞吐量,您可以执行以下操作: 创建多个遍历器,每个遍历器都有自己的配置,重点关注特定的 项状态(NEW_ITEMMODIFIED 等)。下表列出了 以提高吞吐量的配置设置:

.
设置说明默认值可尝试的配置更改
repository.traversers = t1, t2, t3, ...创建一个或多个单独的遍历器,其中 t1, t2, t3, ... 是每个遍历器的唯一名称。每个已命名的遍历器都有自己的一组设置,这些设置使用遍历器的唯一名称进行标识,例如 traversers.t1.hostloadtraversers.t2.hostload一个遍历器可使用此设置添加其他遍历器
traversers.t1.hostload = n标识将多个项同时编入索引所用的线程数 n5根据您要在仓库上增加的负载量,尝试对 n 进行调优。请从 10 或更大值开始进行调整。
schedule.pollQueueIntervalSecs = s标识在重新轮询之前要等待的秒数 (s)。只要 API 在轮询响应中返回项,内容连接器就会继续轮询项。当轮询响应为空时,连接器会等待 s 秒钟,然后重试。此设置仅适用于 ListingConnector10可尝试将此设置降至 1。
traverser.t1.pollRequest.statuses = status1, status2, …指定要编入索引的项的状态(status1status2)。例如,将 status1 设置为 NEW_ITEM 并将 status2 设置为 MODIFIED,指示遍历器 t1 仅将具有这些状态的项编入索引。使用一个遍历器检查所有状态可尝试使用不同的遍历器轮询不同的状态。

有关配置文件参数的更多信息,请参阅 Google 提供的配置参数

上传大文件时 SDK 超时或中断

如果您在上传大型文件时遇到 SDK 超时或中断, 指定更长的超时时间 traverser.timeout=s (其中 s = 秒数)。此值标识工作器的时长 线程必须处理一个项。SDK 的默认超时时间为 60 秒 遍历线程的情况此外,如果您遇到个别 API 请求, 超时,请使用以下方法来增加请求超时值:

请求超时参数 说明 默认值
indexingService.connectTimeoutSeconds 将 API 请求编入索引的连接超时。 120 秒。
indexingService.readTimeoutSeconds 将 API 请求编入索引的读取超时。 120 秒。