3

我在 App Engine 上运行了一个简单的应用程序,但我遇到了奇怪的延迟问题。这是一个 Python 2.7 应用程序,加载请求需要 1.5 到 10 秒(我猜这取决于 GAE 的感觉)。目前这是一个低流量站点,因此之前 GAE 没有空闲实例,大多数请求都是加载请求,导致第一个页面视图的等待时间很长。

我已经尝试将空闲实例的最小数量配置为“1”,这样这些不常见的页面浏览量就可以立即达到温暖的实例。

但是,我现在已经看到了几种情况,即使有一个实例未使用,GAE 也会将传入请求路由到加载实例,而不会触及暖实例:

显示奇怪调度的 gae 仪表板

我怎样才能防止这种情况发生?我觉得我一定是理解错了,因为我当然不期望这种行为。

更新:此外,使这更难理解的是该应用程序启用了线程安全,所以我真的不明白为什么 GAE 会为一个单独的请求而慌张并启动一个实例。

4

2 回答 2

1

其实,我相信这是正常的行为。空闲实例应该保证最小数量的实例始终可用(用于尖峰负载)。

因此,当一些请求开始进入时,它们最初由空闲实例提供服务,但同时 AE 调度程序将开始启动新实例以始终保证相同数量的空闲实例,即使在负载突然增加的情况下也是如此。也就是说,“覆盖”那些忙于服务请求的空闲实例。

调整应用程序性能页面上有详细描述。

于 2012-06-13T20:54:50.640 回答
0

啊!自己受此苦。这个主题领域已经出现在几个线程中(GAE 组和 SO)。如果有人可以拨入低流量站点的设置(开/关),那将是一个真正的好处。IIRC,我认为具有深厚 GAE 经验的人在一个线程中指出,调度程序不能很好地处理非常低容量的应用程序。我还在相对较短的时间内看到了截然不同的启动时间。几分钟后看到启动需要 700 毫秒然后 7000 毫秒,这很痛苦。总的来说,问题不是我的成本,而是基础设施资源的浪费。在测试中,尽管每隔几分钟就使用 RPC 对应用程序执行一次 ping 操作,但我仍然运行了两个实例。如果有 50,000 名其他开发人员进行类似的测试,那可能会累积成巨大的浪费。

于 2012-06-14T01:26:02.643 回答