【问题标题】:Google App Engine - Is this just a fluke, or could changing the version of an app improve cold-start time?Google App Engine - 这只是侥幸,还是改变应用程序的版本可以改善冷启动时间?
【发布时间】:2010-03-17 16:18:53
【问题描述】:

情况如下:我有一个冷启动时间约为 4 秒的应用。我试图通过删除一堆我并不真正需要的库和代码来改善冷启动时间。这样做之后,冷启动时间大约是 3 秒延迟,使用了 3 秒 CPU 时间。

我更改了 appengine-web.xml 中的版本号,没有别的。现在我有两个版本的应用程序,它们的代码完全相同,可以正常运行。

对于冷启动,较新的版本使用 1800 毫秒到 1900 毫秒的 CPU 时间。

对于冷启动,旧版本使用 2400 毫秒到 3000 毫秒的 CPU 时间。

请求每个版本的完全相同的jsp页面来测试冷启动时间。到目前为止,我已经为每个版本采样了 7 次冷启动。

【问题讨论】:

  • 当你的数据显示出明显的差异时,结论可能应该是“有一个我没有想到的差异”而不是“数据一定是错误的”。我们总是忘记事情(或分析不正确),但很难在分布的每一侧随机获得五个数据点。
  • @Jefromi 是的,我希望有人能想出一些我没有想到的原因,或者 Google 的某个人可以确认这可能发生。
  • @Spines:该评论很大程度上是针对 Mimisbrunnr 的假设,即这是侥幸,因为没有明显的解释。我只是认为它最好作为一个全局评论放置,以防止更多“这只是侥幸”的答案。
  • 你刚刚错过了今天的 IRC 聊天。你可以直接问开发者!
  • 您可能已经检查过了,但是您的代码的两个版本是否使用相同的 sdk?即,您最近是否上传了这两个版本?

标签: java google-app-engine


【解决方案1】:

嗯,我认为您的应用程序的外观可能存在某种缓存,因为 gae 上传基本上是差异更新(您只发送更改的文件)。

如果您在一个版本 ID 上发布了许多更改,则 GAE 可能有您的代码的许多快照。

因此,如果您进行了重大更改(这是我的经验法则),您应该始终更改应用程序的版本,以确保这一点。我仅用于错误修复的附加提交,从不用于大型重构/添加或删除 JAR。我认为您那时还拥有新日志,并且只需“刷新安装”您的应用程序,以便 GAE 可以进行一些优化...

同意吗?

【讨论】:

    【解决方案2】:

    听起来像是侥幸,我看不出更改程序的版本号会如何改变速度。除非有巧合的图书馆更新之类的。

    【讨论】:

    • 使用完全相同的代码和库,但是我已经开发了一个多月的旧版本。上传应用时可能没有完全清理旧库或其他什么?
    • 这是可能的,我会采用两种代码,然后保证它们在同一台机器上运行相同的库并运行更多测试。由于速度变化,显然有些不同,但我仍然怀疑它的版本号。
    【解决方案3】:

    版本号会在某处改变执行路径吗?也许在您的应用程序运行之前发生的 XML 解析器或数据绑定中?

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 2016-10-07
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多