首页 > 解决方案 > 发布/订阅推送返回 503 用于基本缩放

问题描述

我正在使用 Pub/Sub 推送订阅,确认截止日期设置为 10 分钟,push端点使用basic缩放托管在 AppEngine 中。在我的日志中,我看到一些 Pub/Sub(应该传递到启动实例)推送请求失败,并503显示错误状态和Request was aborted after waiting too long to attempt to service your request.日志消息。此请求的执行时间从 10 秒(对于大多数请求)到其中一些请求的 30 秒不等。根据这篇文章https://cloud.google.com/appengine/docs/standard/python/how-instances-are-managed#instance_scaling Deadlines的 HTTP 请求是 24 小时,请求不应在 10 秒内中止。有没有办法避免这种异常?

标签: google-app-enginegoogle-cloud-platformgoogle-cloud-pubsub

解决方案


这些失败的请求很可能在Pending Request Queue 中超时,这意味着没有实例可以为它们提供服务。这通常发生在突发传递的 PubSub 消息高峰期间,并且 App Engine 无法快速扩展以应对它们。

缓解这种情况的一种选择是在 app.yaml 文件中将缩放选项切换为自动缩放。您可以调整min_pending_latencyandmax_pending_latency以更好地适应您的场景。您还可以指定min_idle_instances获取准备好处理额外负载的空闲实例(确保还启用和处理预热请求

考虑到 PubSub 会自动重试传递失败的消息。它将根据您的系统行为调整交付率,如此所述。因此,在生成新实例时,您可能会在消息高峰期间遇到一些错误,但您的消息最终会被处理(只要您的设置max_instances足够高以处理负载)。


推荐阅读