2

今天AppEngine宕机了一段时间: http ://code.google.com/status/appengine/detail/serving/2012/10/26#ae-trust-detail-helloworld-get-latency

结果是所有请求都保持为待处理状态,有些请求长达 24分钟。这是我的服务器日志的摘录。这些请求通常在 200 毫秒内得到处理。

https://www.evernote.com/shard/s8/sh/ad3b58bf-9338-4cf7-aa35-a255d96aebbc/4b90815ba1c8cd2080b157a54d714ae0

我的配额(每天 8 美元)在几分钟内就爆炸了,而之前的配额是每天 2 美元左右。

即使我的实际请求仍然响应非常快,如何防止pending_ms 吃掉我的所有配额?我有从 300 毫秒到自动的未决延迟。将最大值限制为 10 秒是否可以防止这种类型的爆发?

4

1 回答 1

0

二十一点75,

  • 没错,将待定延迟提高到 10 秒左右将有助于减少启动的实例数量。

看起来长时间运行的请求会占用您的实例。发生这种情况时,应用引擎会启动新实例来处理新请求,当然实例会花钱。

在您的仪表板上,您可以查看您的实例图,以了解在请求加载完成后实例爆发空闲多长时间。您可以查看您的典型用法以帮助估计安全最大值。当合法流量需要启动新实例时,降低它们可能会导致速度变慢,尤其是在突发流量的情况下,因此您需要调整它以匹配您的预算。作为比较,在将最小值和最大值设置为 1 的非生产应用程序点上可以正常工作。

除此之外,减少应用引擎资源使用的一般技术也会有所帮助。听起来您已经经历了这些,因为您的典型请求时间很短。如果您的代码将正确处理线程(无全局变量等)并且您的实例有足够的可用内存来处理多个请求,则启用并发请求可能会有所帮助。

于 2012-11-24T15:07:48.553 回答