今天AppEngine停了一段时间: http://code.google.com/status/appengine/detail/serving/2012/10/26#ae-trust-detail-helloworld-get-latency
结果是所有请求都保留为待处理状态,有些请求长达24 分钟。这是我的服务器日志的摘录。这些请求通常在不到200毫秒的时间内处理。
我的配额(每天8美元)在几分钟内爆炸,之前每天约为2美元。
即使我的实际请求仍然响应速度很快,我如何防止pending_ms吃掉所有配额?我有300毫秒的待决延迟到自动。将最大值限制为10秒会阻止这种类型的爆发吗?
答案 0 :(得分:0)
blackjack75,
看起来长时间运行的请求会占用您的实例。发生这种情况时,应用引擎会旋转新实例来处理新请求,当然实例需要花钱。
在仪表板上,您可以查看实例图,了解请求加载完成后实例突发停留的时间。 您可以查看典型用法,以帮助估算最大安全数。 当合法流量需要启动新实例时,降低它们可能会导致速度变慢,尤其是突发流量时,因此您需要根据预算进行调整。对于比较,在min和max设置为1的非生产appspot上工作正常。
除此之外,用于减少应用引擎资源使用的general techniques也会有所帮助。听起来你已经完成了这一点,因为你的典型请求时间很短。如果您的代码正确处理线程(没有全局变量等)并且您的实例有足够的可用内存来处理多个请求,那么启用并发请求可能会有所帮助。