Bigtable サブスクリプションのトラブルシューティング

このドキュメントでは、Bigtable サブスクリプションのトラブルシューティングのヒントについて説明します。

サブスクリプションを作成または更新できない

Bigtable サブスクリプションを作成または更新しようとすると、次のエラーが発生することがあります。

権限拒否エラー

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 テーブルにメッセージは書き込まれません。メッセージはサブスクリプション バックログに残ります。デッドレター トピックが構成されている場合でも、メッセージはデッドレター トピックに配信されません。未確認メッセージは、サブスクリプションのメッセージ保持期間の間保持されます。

問題が解決すると、最終的にサブスクリプションは正常な状態に戻ります。

バックログの増加

サブスクリプションの状態が ACTIVE であっても、サブスクリプションのメッセージのバックログが増加している場合や、メッセージがサブスクリプションのデッドレター トピックに送信されている場合は、次の問題を探します。

パブリッシュ レートが容量を超えている

トピックへのメッセージのパブリッシュ レートが Bigtable クラスタの容量を超えると、サブスクリプションにバックログが蓄積される可能性があります。

メッセージの順序指定には、パフォーマンス上のトレードオフが伴います。順序指定で Bigtable サブスクリプションを使用すると、スループットが低下したり、メッセージ配信のレイテンシが増加したりする可能性があります。順序付けを有効にするとパフォーマンスの問題が発生する場合は、ホットキーを回避するために十分な粒度の順序付けキーを使用するか、順序付けを必要としないようにアプリケーションを変更してください。詳細については、順序付きメッセージを使用する際の考慮事項をご覧ください。

クラスタのパフォーマンスをモニタリングし、クラスタサイズの拡大を検討します。詳細については、Bigtable ドキュメントの次のトピックをご覧ください。

リージョン間のトラフィック

アプリケーションが Bigtable クラスタとは異なるリージョンからトピックにパブリッシュする場合、同じリージョンからパブリッシュする場合と比較して、各メッセージのパブリッシュに時間がかかります。公開時間が長くなると、サブスクリプションが Bigtable にメッセージを書き込むレートが低下し、合計スループットが低下します。

メッセージのパブリッシュにかかる時間を最小限に抑えるには、Bigtable クラスタと同じリージョンでメッセージをパブリッシュする必要があります。

次のステップ

  • Bigtable サブスクリプションに問題がまだある場合は、サポートの利用をご覧ください。