【问题标题】:GAE Starting dynamic instance to serve requests instead of using idle resident instancesGAE 启动动态实例来服务请求,而不是使用空闲的常驻实例
【发布时间】:2013-04-26 18:31:51
【问题描述】:

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

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

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

非常感谢

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    查看 Google 群组上的 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 运行时似乎启动得更快。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 感谢您的回答,我可以看到其他人也在努力解决此类问题。我将用 5 个实例进行一些测试,并在这里分享结果。欢迎任何其他提示!
        • 期待听到您的结果。还要确保给问题加注星标:)
        • 我已经进行了以下测试,这些测试可能对 GAE 上的低流量应用程序有用:
        • 测试 1 -> 5xF2 中间 5 秒等待延迟结果:作为用户,我仍然会立即进行热身
        • 测试 2 -> 8xF2 中间有 5 秒等待延迟:与上面相同
        猜你喜欢
        • 2014-12-17
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-16
        • 2020-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多