本文提供 Bigtable 訂閱項目的疑難排解提示。
無法建立或更新訂閱項目
嘗試建立或更新 Bigtable 訂閱項目時,可能會遇到下列錯誤。
權限遭拒錯誤
如果 Bigtable 執行個體或資料表不存在,或是設定的服務帳戶無法存取任一項目,您會收到權限遭拒錯誤。
如何解決這個問題:
確認執行個體和資料表是否存在。詳情請參閱下列文件:
如果沒有,請建立這些群組,然後重試建立訂閱方案。如需這個步驟的範例,請參閱「將 Pub/Sub 的資料寫入 Bigtable」。
如果仍收到這則錯誤訊息,請檢查服務帳戶是否具備正確的權限。詳情請參閱為服務帳戶授予身分與存取權管理角色。
缺少資料欄系列
如果 Bigtable 資料表沒有正確的資料欄系列,您會收到 INCOMPATIBLE_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 訂閱方案仍有問題,請參閱「取得支援」。