【问题标题】:App Engine and slow response timeApp Engine 和缓慢的响应时间
【发布时间】:2015-02-18 16:02:19
【问题描述】:

我们需要构建一个必须始终在 100 毫秒内回复的 Web 服务。我们计划使用 memcache 作为我们的存储系统,以避免来自 Google Cloud SQL 或 DataStore 的延迟。

将 App Engine 与 Python 结合使用是个好主意还是太慢了?

【问题讨论】:

    标签: google-app-engine memcached


    【解决方案1】:

    Datastore 的获取时间通常在几十毫秒到几十毫秒之间,而 memcache 的获取时间通常在 1 到 2 毫秒左右。 因此,如果这就是您要使用的全部内容并忽略自己的 HTTP 请求时间,您就可以到达那里。

    但是,App Engine 有时会在需要扩展时发出加载请求并显示以下消息:

    此请求导致为您的应用程序启动一个新进程, 从而导致您的应用程序代码第一次被加载。 因此,与典型的请求相比,此请求可能需要更长的时间并使用更多的 CPU 申请您​​的申请。

    .

    什么是加载请求?

    某些请求运行速度较慢,因为 App Engine 需要创建新的 Java 为请求提供服务的虚拟机 (JVM)。这种要求是 称为加载请求。在加载请求期间,您的应用程序 进行初始化(如类加载、JIT编译等) 这会导致请求花费更长的时间。

    请求的截止日期约为 60 秒,其中包括 初始化和您的应用程序需要进行的任何其他工作 在启动时执行。如果您的应用程序超出此限制,则 返回 DeadlineExceededException。

    您可以通过过滤在请求日志中找到这些类型的请求 在 loading_request=1

    只有当你扩大规模时才会发生这种情况,所以如果你有一个稳定的流量并且你可以允许这种情况偶尔发生一次,你就很好。

    【讨论】:

    • 事实上,您可以通过启动空的备用实例来绕过该问题。在使用这些实例时,会启动新的“真实”实例并耗尽备用实例,为下一次爆发做好准备。
    • 我在使用 Python 和 Java 时在延迟方面取得了不错的成绩,但发现 Java 上的加载延迟可能存在问题。您可能发现 Go 提供的延迟比 Python 低,但代价是 API 不太成熟。您可能想制作一些原型并使用 Cloud Trace 查看 RPC 的细分(例如 Memcache、Datastore)。
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多