本文档提供了有关 Bigtable 订阅的问题排查提示。
无法创建或更新订阅
当您尝试创建或更新 Bigtable 订阅时,可能会遇到以下错误。
权限遭拒错误
如果 Bigtable 实例或表不存在,或者配置的服务帐号无权访问其中任何一个,您会收到权限遭拒错误。
若要解决此问题,请执行以下操作:
检查实例和表是否存在。如需了解详情,请参阅以下文档:
如果它们不存在,请创建它们,然后重试创建订阅。如需查看此步骤的 示例,请参阅 从 Pub/Sub 写入 Bigtable。
如果您仍然收到此错误,请检查服务帐号是否具有正确的权限。如需了解详情,请参阅 向服务账号授予 IAM 角色。
缺少列族
如果 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 表。消息会保留在订阅积压中; 如果配置了 死信主题,则不会将消息传送给该主题。未确认的消息会保留订阅的 消息保留时长。
解决问题后,订阅最终会恢复到正常状态。
积压不断增加
如果您的订阅状态为 ACTIVE,但订阅中的消息积压不断增加,或者消息转到订阅的死信主题,请查找以下问题。
发布速率超出容量
如果向主题发布消息的速率超出 Bigtable 集群的容量,则订阅中可能会出现积压。
消息排序会带来性能方面的权衡。 使用带有排序功能的 Bigtable 订阅可能会导致吞吐量降低或消息传送延迟时间增加。如果您发现启用排序功能后出现性能问题,请务必使用足够精细的排序键来避免热键,或者修改应用以使其不需要排序。如需了解详情,请参阅 使用排序消息时的注意事项。
监控集群的性能,并考虑增加集群大小。如需了解详情,请参阅 Bigtable 文档中的以下主题:
跨区域流量
如果您的应用从与 Bigtable 集群不同的区域发布到主题,则与从同一区域发布相比,每条消息的发布时间都会更长。发布时间越长,订阅向 Bigtable 写入消息的速率就越低,从而降低总吞吐量。
为了尽量缩短消息的发布时间,您应该在与 Bigtable 集群相同的区域中发布消息。
后续步骤
- 如果您仍然遇到 Bigtable 订阅问题,请参阅获取支持。