基本缩放的发布/订阅推送返回503

时间:2019-09-19 12:19:47

标签: google-app-engine google-cloud-platform google-cloud-pubsub

我正在使用发布/订阅推送订阅,确认截止时间设置为10分钟,push终结点托管在basic缩放的AppEngine中。 在我的日志中,我发现某些发布/订阅(据说已传递到启动实例)推送请求失败,并显示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秒内终止请求。 有办法避免这种例外吗?

1 个答案:

答案 0 :(得分:2)

这些失败的请求很可能在Pending Request Queue中超时,这意味着没有实例可用于为其服务。这通常发生在突发发送的PubSub消息激增期间,而App Engine无法迅速扩展以应对它们。

减轻这种情况的一种方法是在您的app.yaml文件中将缩放选项切换为automatic scaling。您可以调整min_pending_latencymax_pending_latency以更好地适应您的情况。您还可以指定min_idle_instances来获取准备好处理额外负载的空闲实例(确保还启用并处理warmup requests

请注意,尽管PubSub会自动重试以传递失败的消息。如here所述,它将根据您系统的行为来调整投放速度。因此,在产生大量新消息的同时,您可能会在消息高峰期间遇到一些错误,但是最终将处理您的消息(只要您将max_instances设置得足够高以处理负载)。