本文提供 Bigtable 訂閱項目的疑難排解提示。
無法建立或更新訂閱項目
嘗試建立或更新 Bigtable 訂閱項目時,可能會遇到下列錯誤。
權限遭拒錯誤
如果 Bigtable 執行個體或資料表不存在,或是設定的服務帳戶無法存取任一項目,您會收到權限遭拒錯誤。
如何解決這個問題:
確認執行個體和資料表是否存在。詳情請參閱下列文件:
如果不存在,請建立這些項目,然後重試建立訂閱項目。如需這個步驟的範例,請參閱「從 Pub/Sub 寫入 Bigtable」。
如果仍收到這項錯誤,請檢查服務帳戶是否具備正確權限。詳情請參閱「將 IAM 角色授予服務帳戶」。
缺少資料欄系列
如果 Bigtable 資料表沒有正確的資料欄系列,您會收到 INCOMPATIBLE_BIGTABLE_SCHEMA 錯誤。
這項錯誤可能是由下列問題所致:
- 資料表沒有
data資料欄系列。 - 中繼資料寫入已啟用,且資料表沒有
pubsub_metadata資料欄系列。
如要解決這個問題,請建立必要的資料欄系列。詳情請參閱「新增資料欄系列」。
訂閱項目未寫入資料
如果 Bigtable 訂閱項目未寫入資料,請執行 gcloud beta pubsub subscriptions describe 指令,檢查訂閱項目狀態:
gcloud beta pubsub subscriptions describe SUBSCRIPTION_ID
將 SUBSCRIPTION_ID 替換為訂閱方案名稱。
bigtableConfig.state 欄位包含狀態。如果訂閱項目已準備好將訊息寫入 Bigtable,狀態為 ACTIVE。否則,設定中存在錯誤,導致訂閱項目無法將訊息寫入 Bigtable 資料表。
設定問題可能包括:
應用程式設定檔未設定為單叢集轉送。
權限錯誤。請參閱「權限遭拒錯誤」。
Bigtable 資料表缺少必要資料欄系列。請參閱「缺少資料欄系列」。
由於訊息儲存政策,訂閱項目無法寫入 Bigtable 資料表。如果
enforceInTransit為True,且資料表位置不在允許的區域中,就會發生這項錯誤。
訂閱項目處於錯誤狀態時,不會將訊息寫入 Bigtable 資料表。訊息會保留在訂閱項目待處理事項中,不會傳送至dead-letter 主題 (如有設定)。未確認的訊息會保留在訂閱項目的訊息保留時間內。
問題解決後,訂閱項目最終會恢復正常狀態。
積壓工作增加
如果訂閱狀態為 ACTIVE,但訂閱項目中的訊息待處理量不斷增加,或訊息傳送到訂閱項目的無法投遞郵件主題,請找出下列問題。
發布速率超過容量
如果發布至主題的訊息速率超過 Bigtable 叢集的容量,訂閱項目中可能會累積待處理的訊息。
訊息排序會影響效能。使用排序功能搭配 Bigtable 訂閱項目時,可能會導致處理量降低或訊息傳送延遲時間變長。如果啟用排序功能後發生效能問題,請務必使用足夠精細的排序鍵,避免熱鍵,或修改應用程式,使其不需要排序功能。詳情請參閱使用排序訊息時的注意事項。
監控叢集效能,並考慮增加叢集大小。詳情請參閱 Bigtable 說明文件中的下列主題:
跨區域流量
如果應用程式發布至主題的區域與 Bigtable 叢集不同,相較於從相同區域發布,每則訊息的發布時間會較長。發布時間越長,訂閱項目將訊息寫入 Bigtable 的速率就越慢,進而降低總處理量。
為盡量縮短訊息發布時間,建議您在 Bigtable 叢集所在的相同區域發布訊息。
後續步驟
- 如果 Bigtable 訂閱方案仍有問題,請參閱「取得支援」。