【发布时间】:2015-02-18 16:02:19
【问题描述】:
我们需要构建一个必须始终在 100 毫秒内回复的 Web 服务。我们计划使用 memcache 作为我们的存储系统,以避免来自 Google Cloud SQL 或 DataStore 的延迟。
将 App Engine 与 Python 结合使用是个好主意还是太慢了?
【问题讨论】:
标签: google-app-engine memcached
我们需要构建一个必须始终在 100 毫秒内回复的 Web 服务。我们计划使用 memcache 作为我们的存储系统,以避免来自 Google Cloud SQL 或 DataStore 的延迟。
将 App Engine 与 Python 结合使用是个好主意还是太慢了?
【问题讨论】:
标签: google-app-engine memcached
Datastore 的获取时间通常在几十毫秒到几十毫秒之间,而 memcache 的获取时间通常在 1 到 2 毫秒左右。 因此,如果这就是您要使用的全部内容并忽略自己的 HTTP 请求时间,您就可以到达那里。
但是,App Engine 有时会在需要扩展时发出加载请求并显示以下消息:
此请求导致为您的应用程序启动一个新进程, 从而导致您的应用程序代码第一次被加载。 因此,与典型的请求相比,此请求可能需要更长的时间并使用更多的 CPU 申请您的申请。
.
什么是加载请求?
某些请求运行速度较慢,因为 App Engine 需要创建新的 Java 为请求提供服务的虚拟机 (JVM)。这种要求是 称为加载请求。在加载请求期间,您的应用程序 进行初始化(如类加载、JIT编译等) 这会导致请求花费更长的时间。
请求的截止日期约为 60 秒,其中包括 初始化和您的应用程序需要进行的任何其他工作 在启动时执行。如果您的应用程序超出此限制,则 返回 DeadlineExceededException。
您可以通过过滤在请求日志中找到这些类型的请求 在 loading_request=1
只有当你扩大规模时才会发生这种情况,所以如果你有一个稳定的流量并且你可以允许这种情况偶尔发生一次,你就很好。
【讨论】: