【问题标题】:Identify why Google app engine is slow确定 Google 应用引擎运行缓慢的原因
【发布时间】:2013-03-04 14:49:34
【问题描述】:

我为使用 Play 框架 1.x 并在 GAE 上运行的客户端开发了一个应用程序。该应用程序运行良好,但有时速度非常慢。加载简单页面大约需要 30 秒,但有时运行速度更快 - 无需更改任何代码。

有什么方法可以确定它运行缓慢的原因吗?我试图联系支持人员,但找不到任何电话号码或电子邮件。谷歌官方群也没有回应。

您将如何解决这个问题?目前我的客户因为加载时间太慢而非常生气,但此时切换到其他提供商是最后的选择。

【问题讨论】:

  • 您的数据存储使用主/从还是高复制?
  • 你好,我正在使用高复制
  • 想知道 - 您是否正在监控站点负载/GC/定时您的代码 - 如果是,如何?
  • 不,我没有监控,但我正在寻找方法..
  • 对我来说,这个问题看起来就像你的第一句话。 GAE 不是提供商,GAE 是一个 SDK,一个完整的环境。使用诸如 play 之类的框架,它们不是为 GAE 设计的。为 GAE 开发意味着并且需要考虑 GAE 而不是某些框架或库......(这也意味着在选择 GAE 后你不能去 EC2 或其他任何东西)

标签: google-app-engine playframework


【解决方案1】:

使用GAE Appstats 来分析您的远程过程调用。所有的 RPC 都很慢(Google Cloud Storage,Google Cloud SQL,...),所以如果你可以减少 RPC 的数量或者可以使用一些缓存数据结构,使用它们 -> 你的应用程序会更快。但是您可以通过 appstats 查看哪些部分速度较慢以及是否需要注意:)。

例如,我为我的应用程序创建了一个 Google Cloud Storage 缓存,并将执行时间从 2 分钟减少到 30 秒以下。 RPC 是 GAE 中的瓶颈。

【讨论】:

    【解决方案2】:

    Google 通常不会为很多服务提供联系支持。所描述的关于谷歌应用引擎缓慢的问题可能是由冷启动引起的。 Google 应用引擎前端实例在大约 15 分钟后休眠。您可以编写一个 cron 作业以每 14 分钟 ping 一次实例以保持节点正常运行。

    【讨论】:

      【解决方案3】:

      结合一些答案并添加一些要检查的内容:

      1. 使用应用统计信息进行调试。寻找“阶梯式”情况和 RPC 调用。也许您的应用程序中的某些东西在您的逻辑中不会一直发生的某些点触发 RPC 调用。

      2. 调整您的实例设置。添加一些永久/常驻实例,看看是否有所作为。如果您正在启动新实例,那么事情会很慢,可能在您描述的时间范围内(30 秒或更长时间)。它看起来很随机。不仅仅是实例的数量,而是您使用的滑块的组合(您实际上可能会因为太少/太多而伤害自己)。

      3. 查看您的应用程序本身。您是否在 JVM 中进行大量内存分配?分配/释放内存本质上是一个缓慢的操作,并且可能导致冻结。您确定您的冻结不是 JVM 问题吗?尝试在本地复制问题并调整 JVM xmx 和 xms 设置,看看是否发现类似的行为。还要在本地分析您的应用程序的内存/性能问题。您可以使用池、DI 容器等来减少分配。

      4. 您是否在前端服务器上运行任何类型的 cron 作业/处理?尝试尽可能多地转移到后台任务,例如发送电子邮件。间隔可能看起来是随机的,但它可能是根据您的工作设置发生的事情的结果。每天上午 9 点可能并不代表您的想法,具体取决于 cron/task 选项。一个必然结果 - 将事物移动到后端服务器并拉取队列。

      如果没有更多信息,很难给你一个好的答案。这里的人能做的最好的事情就是给你一个起点,这里几乎每个答案都已经有了。

      【讨论】:

        【解决方案4】:

        通过使至少一个实例永久化,您在第一次使用时会得到很大的改进。大约需要 15 秒。在实例中加载应用程序,这就是为什么在一段时间内没有人使用应用程序时您会遇到很长的请求时间

        【讨论】:

        • 我知道启动时间。正如我所说,它在随机间隔上运行缓慢。
        • 您确定这不是因为新实例正在启动。根据您在 GAE 控制台中的应用程序设置,您实际上可能会对您的应用程序产生负面影响,具体取决于设置。已经有很多关于这个和文章的讨论,但我似乎无法立即找到它们。您也可以使用预热请求。
        猜你喜欢
        • 1970-01-01
        • 2014-09-16
        • 2022-07-22
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        相关资源
        最近更新 更多