本文档提供了有关 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 表。消息会保留在订阅积压的消息中;如果配置了死信主题,则不会将消息递送到该主题。未确认的消息会保留在订阅的消息保留时长内。
问题解决后,订阅最终会恢复到正常状态。
积压增加
如果您的订阅状态为 ACTIVE,但订阅中的积压消息越来越多,或者消息发送到了订阅的死信主题,请查找以下问题。
发布速率超出容量
如果向主题发布消息的速率超过了 Bigtable 集群的容量,订阅中可能会积压未处理的消息。
消息排序会带来性能方面的权衡取舍。 将 Bigtable 订阅与排序搭配使用可能会导致吞吐量降低或消息传送延迟时间增加。如果您发现启用排序功能后出现性能问题,请务必使用足够精细的排序键来避免热门键,或者修改应用以使其不需要排序。如需了解详情,请参阅使用有序消息传递时的注意事项。
监控集群的性能,并考虑增加集群规模。如需了解详情,请参阅 Bigtable 文档中的以下主题:
跨区域流量
如果您的应用从与 Bigtable 集群不同的区域发布到主题,则每条消息的发布时间会比从同一区域发布的时间长。发布时间越长,订阅将消息写入 Bigtable 的速率就越低,从而降低总吞吐量。
为了最大限度地缩短消息发布时间,您应在 Bigtable 集群所在的区域中发布消息。
后续步骤
- 如果您仍有 Bigtable 订阅方面的问题,请参阅获取支持。