【问题标题】:What causes "Request was aborted after waiting too long to attempt to service your request"?什么原因导致“请求在等待太长时间以尝试为您的请求提供服务后被中止”?
【发布时间】:2020-04-05 05:51:15
【问题描述】:

什么原因导致“请求在等待太长时间以尝试为您的请求提供服务后中止”?

这似乎是某种内部超时的结果,但我不知道这是在哪里配置的。 我们目前正在使用自动缩放,该错误是由于我们的任务队列中的任务数量临时增加造成的。自动缩放不应该创建更多实例来处理该请求吗?

此外,如果 Cloud Tasks 中的任务失败并显示“请求在等待太长时间以尝试处理您的请求后被中止”,该任务是重试还是从队列中删除?

编辑:我发现了问题。 这是我们 app.yaml 中用于缩放的配置:

basic_scaling:
  max_instances: 2

【问题讨论】:

  • 您好,您能否扩展一下您看到此错误出现的频率?另外,我认为这可能是由缩放选项引起的错误,尽管它也可能因某些内存问题而生成......我相信这可能是配置问题,所以我建议检查您的服务仪表板并尝试检查您是否发现了一些扩展问题,或者当服务处于大量请求负载时是否会发生这种情况。
  • 这种情况很少发生。我认为当时的资源使用率(例如内存和 CPU)并不高,但我们在任务队列中确实有不少任务(可能有几千个)。
  • 我认为这可能与您的扩展配置有关,如果您可以查看有关应用引擎如何管理实例的文档,那就太好了,也许问题是有没有足够的实例来服务这些请求,正如你所说,这并不常见,这让我认为它可能是一个开始扩大实例的请求,或者......它可能是 GAE 的一个简单错误,因为有时它可能会失败,但我相信这就是为什么他们有 SLA cloud.google.com/appengine/docs/standard/python/…

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


【解决方案1】:

我在代理查看 munin 节点时发现了这一点,该节点在 f1-micro 后端具有许多图形。如果等待的时间超过(min|max)_pending_latency,响应将失败并出现 529 错误 - 可能它正在尝试创建一个新实例,因为违反了最小值,但发现它不能。

默认值似乎是 5 秒。您可以在app.yaml 中将其设置为最大 15 秒。

automatic_scaling:
  min_pending_latency: 15s
  max_pending_latency: 15s

一旦我这样做了,我就不再收到等待 6 秒的请求的错误。当然,我确信 Google 更希望您增加扩展实例的数量,或者使用更快的节点。但也许您只想扩展到一两个,或者 15 秒对于您正在尝试做的事情来说是一个可接受的延迟。

供参考,我的完整app.yaml

runtime: php73
service: munin
instance_class: F1

automatic_scaling:
  max_instances: 1
  min_instances: 0
  target_cpu_utilization: 0.95
  target_throughput_utilization: 0.95
  max_concurrent_requests: 80
  max_pending_latency: 15s

handlers:
- url: .*
  script: auto
  secure: always

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2018-12-12
    • 2012-11-07
    • 2017-02-12
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    相关资源
    最近更新 更多