【问题标题】:Google App Engine: Warmup/Loading Requests and Always OnGoogle App Engine:预热/加载请求和始终开启
【发布时间】:2012-10-24 00:33:18
【问题描述】:

我对预热请求的理解是,它是在准备在不久的将来使用。

我对加载请求的理解是它是一个启动新实例的请求,因为它现在需要。因此,自己应该提前尝试“预热”实例,以减少加载延迟。

所以我的第一个问题是:我对这些请求类型的理解是否正确,如果不正确(或者我在这里遗漏了任何值得注意的内容),那么请首先澄清/纠正我!

接下来我很好奇:如何让 GAE 服务器端代码“处理”预热或加载请求?是否有我需要实现的特定接口(在 Java EE 领域,您也需要实现 web/app 容器在部署/启动应用程序时查找和调用的ServiceContextListener)。如果是这样,这样做的 API 是什么?否则,GAE 应用程序的“入口点”是什么?基本上我想知道什么类/方法应该处理预热/加载请求。

最后,我问:在启动过程中处理预热请求和加载请求之间应该有哪些(一般)活动不同?他们不会一样吗?我之所以问,是因为我对使用 GAE 的“始终开启”高级功能感兴趣,并且不确定我应该将我的启动代码放置在哪里,以用于将始终开启的实例。

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    预热请求是一种让实例准备好处理流量的方法,这样您的用户就不必等待 Java 或 Python 应用加载其所有导入,然后执行任何特定于实例的初始化(包括缓存变暖)它需要做的。预热请求适用于前端和后端。

    具体操作方式取决于语言,但基本上您需要一个处理程序来处理对/_ah/warmup 的请求,该处理程序会产生除 500 响应之外的其他内容。有关详细信息,请谷歌搜索“App engine warmup request”并选择相应的结果。 Java 默认启用预热请求,但对于 Python,您必须在 app.yaml 中启用它们。我还没有为 Go 尝试过它们。

    据我所知,“加载请求”只是实例必须处理的第一个请求的名称。 https://developers.google.com/appengine/kb/java#What_Is_A_Loading_Request 有一些细节。

    【讨论】:

    • 让我们想象一下,AppEngine 应该处理一个请求,但此时所有实例都被使用,然后应用引擎将决定旋转一个新实例,在这种情况下,应用引擎是否会发送预热对新实例的请求,这意味着请求仍在等待,我不认为是这种情况,或者应用程序引擎预测未来并假设应该旋转一个新实例,因此它会旋转一个新实例并向其发送预热请求以及何时一个没有实例的新请求来了,然后应用引擎将此请求发送到已经预热的实例?
    • 我看了好几年了。在某一时刻(使用 AppEngine '经典')总是有一个热身请求。应该很容易验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    相关资源
    最近更新 更多