調整連接器設定

Google Cloud Search SDK 包含多個 Google 提供的設定參數,供所有連接器使用。瞭解如何調整這些設定可以大幅簡化資料索引作業。本指南列出了建立索引期間可能發生的幾個問題,以及用來解決這些問題的設定。

FullTraversalConnector 的索引處理量偏低

下表列出可改善 FullTraversalConnector 的配置設定:

設定 說明 預設 要試用的設定變更
traverse.partitionSize 擷取額外的 APIOperation() 前,要分批處理的 ApiOperation() 數量。SDK 會先等待處理目前的分區後,再擷取其他項目。這項設定取決於可用記憶體容量,較小的分區大小 (例如 50 或 100) 需要的記憶體較少,但會代表 SDK 等待更多。 50 如果您可以使用大量記憶體,請嘗試將 partitionSize 增加至 1000 以上。
batch.batchSize 批次處理的要求數量。分區結束時,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 請嘗試將threadPoolSize增加為 10 的倍數。

最後,建議您使用 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識別用於同時為項目建立索引的執行緒數量 (n)。5根據您要新增至存放區的負載量來調整 n。開頭的值為 10 以上。
schedule.pollQueueIntervalSecs = s識別重新輪詢前要等待的秒數 (s)。只要 API 傳回意見調查回應中的項目,內容連接器就會持續輪詢項目。如果意見調查回覆沒有內容,連接器會等待 s 秒後再試一次。這項設定僅供 ListingConnector 使用10建議降到 1。
traverser.t1.pollRequest.statuses = status1, status2, …指定要建立索引的項目狀態:status1status2。舉例來說,將 status1 設為 NEW_ITEMstatus2 設為 MODIFIED,會指示 t1 僅為具有這些狀態的項目建立索引。一項週遊程序可檢查所有狀態嘗試針對不同狀態進行不同的周遊者輪詢。

如要進一步瞭解設定檔參數,請參閱「Google 提供的設定參數」。

在上傳大型檔案時,SDK 逾時或中斷

上傳大型檔案時,如果 SDK 逾時或中斷,請使用 traverser.timeout=s (其中 s = 秒數) 指定較大的逾時時間。這個值可指出背景工作執行緒處理項目所需的時間。對於週遊執行緒,SDK 的預設逾時為 60 秒。此外,如果您遇到個別 API 要求出現逾時的情況,請使用下列方法增加要求逾時值:

要求逾時參數 說明 預設
indexingService.connectTimeoutSeconds 為 API 要求建立索引的連線逾時。 120 秒。
indexingService.readTimeoutSeconds 讀取 API 要求索引建立逾時。 120 秒。