几分钟内使用pending_ms处理AppEngine中断

时间:2012-10-26 23:52:26

标签: google-app-engine

今天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秒会阻止这种类型的爆发吗?

1 个答案:

答案 0 :(得分:0)

blackjack75,

  • 你是对的,将等待延迟提高到10秒就有助于减少启动的实例数。

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

在仪表板上,您可以查看实例图,了解请求加载完成后实例突发停留的时间。 您可以查看典型用法,以帮助估算最大安全数。 当合法流量需要启动新实例时,降低它们可能会导致速度变慢,尤其是突发流量时,因此您需要根据预算进行调整。对于比较,在min和max设置为1的非生产appspot上工作正常。

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