1

我检查了一堆关于同一主题的其他帖子,比如这个:“驻留实例似乎不起作用”,但我找不到我的问题的有效答案

我有 4 个 F2 常驻,每当有人访问我的应用程序时,都会安装一个新的动态实例来响应请求,而不是使用常驻实例。因此,尝试使用我的应用程序的人将等待 20 秒。然后所有的新请求都会来到新的动态实例。我的常驻实例的响应时间低于我的最小等待延迟(5 秒)。我的应用程序从昨天开始投入生产,如果没有人使用它 5 分钟,那么下一个连接的人将不得不等待 20 秒!

从我读过的内容来看,有人会说如果我将最小空闲实例设置为 4(为了拥有我的常驻实例),GAE 将一直尝试拥有 4 个中间实例,因此我们将启动新实例;但是我总是需要等待 35 秒才能完成我的所有第一次连接使用该应用程序 2 分钟后一切都很好。一位在 Google 工作的人告诉我,常驻实例的管理存在错误,我必须拥有 3 个常驻实例才能快速为我的用户提供答案。我确定我没有理解一些东西。任何人都可以帮助我让我的用户在连接到我的应用程序并且没有人连接 5 分钟时有公平的响应时间吗?

非常感谢

4

3 回答 3

2

检查谷歌组上的 GAE 邮件列表,你会看到这个问题一遍又一遍地出现。

简短的回答是,GAE 专为高负载而设计。存在驻留实例来处理工作负载的峰值,尽管我还没有真正看到“峰值”的正式定义。如果 GAE 的神秘负载平衡算法没有将您的流量确定为峰值,您将获得一个新的动态实例。

如果您向您的应用程序抛出数百或数千个请求,那么其中一些将被定向到常驻实例,同时等待动态实例启动。

您无能为力,只能加入一长串抱怨此问题的人。对此至少有两个问题:

https://code.google.com/p/googleappengine/issues/detail?id=7865&q=scheduler&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

https://code.google.com/p/googleappengine/issues/detail?id=7706&q=scheduler&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

或者,您可以重写您的应用程序,以便您没有 20 秒的启动时间。您可以做一些事情,例如延迟大部分加载,但在 Java 中这样做很痛苦。

另外,python 和 Go 运行时似乎启动得更快。

于 2013-05-02T15:13:44.233 回答
1

我找到了一个实用的解决方案,目前看来还可以:我进行了以下测试,这些测试可能对 GAE 上的低流量应用程序有用:

  • 测试 1 -> 5xF2 中间 5 秒等待延迟结果:我仍然以用户身份立即进行热身 -</li>
  • 测试 2 -> 8xF2 中间有 5 秒等待延迟:同上
  • 测试 3 -> 8xF1 居民,等待延迟为 5 秒:同上
  • 测试 4 -> ****1xF4 驻留,等待延迟为 15 秒****:更好。第一个回答的实例(第一个请求 50 到 100)是常驻者,然后打开一个动态实例。并在 2 分钟后关闭而不使用我的应用程序。几乎就像我梦寐以求的那样,GAE 会起作用——所以在过去的 4 天里,它在 1xF4 驻留器和 15 秒待定的 lantency 中运行良好。–

如果出现新问题,我现在认为避免用户冷启动的最佳方法是每 30 秒 ping 一次我的应用程序,我会努力缩短冷启动时间

于 2013-05-05T12:06:48.813 回答
0

这是相关问题(可能还有其他问题):

http://code.google.com/p/googleappengine/issues/detail?id=7706

似乎有人在 5 上取得了成功,但是从您的研究和其他评论来看,我读到的可能只是更多的机会更好。

于 2013-05-02T14:56:35.033 回答