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 要求模式 (ASYNCHRONOUS
或 SYNCHRONOUS
)。
如要進一步瞭解設定檔參數,請參閱 Google 提供的設定參數。
ListTraversalConnector 的索引處理量偏低
根據預設,實作 ListTraversalConnector 的連接器會使用
獨行符號,為您的項目建立索引。如要提高索引處理量,您可以
可建立多個週遊,並且各自設計要著重的
項目狀態 (NEW_ITEM
、MODIFIED
等)。下表為
配置設定,改善處理量:
設定 | 說明 | 預設 | 要試用的設定變更 |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | 建立一或多組個別週遊,其中 t1, t2, t3, ... 是每個週遊的專屬名稱。每個指定的周遊者都有各自的設定,以周遊者的獨特名稱來識別,例如 traversers.t1.hostload 和 traversers.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, … | 指定要建立索引的項目狀態:status1、status2、…。舉例來說,將 status1 設為 NEW_ITEM ,status2 設為 MODIFIED ,會指示 t1 僅為具有這些狀態的項目建立索引。 | 一項週遊程序可檢查所有狀態 | 嘗試針對不同狀態進行不同的周遊者輪詢。 |
如要進一步瞭解設定檔參數,請參閱 Google 提供的設定參數。
在上傳大型檔案時,SDK 逾時或中斷
如果上傳大型檔案時發生 SDK 逾時或中斷情形,
指定較大的逾時值
traverser.timeout=s
(其中 s = 秒數)。這個值代表工作站時間長度
執行緒都必須處理項目SDK 中的預設逾時為 60 秒
延伸至另一個字詞的模式另外,如果您遇到個別 API 要求
逾時,請使用下列方法增加要求逾時值:
要求逾時參數 | 說明 | 預設 |
---|---|---|
indexingService.connectTimeoutSeconds |
為 API 要求建立索引的連線逾時。 | 120 秒。 |
indexingService.readTimeoutSeconds |
讀取 API 要求索引建立逾時。 | 120 秒。 |