2017-05-10 13 views
1

我有appengine端点,并尝试减少少量首次调用新创建的端点实例的延迟。应用程序是用Java编写的,端点是自动缩放的。 为了解决这个问题,我配置了空闲实例,虽然即使实例已经创建,但是前几个路由到它的呼叫会消耗一些额外的时间。关注documentation我已经实现了处理预热请求的自定义servlet,并在启动时将EndpointsServlet标记为加载。如何预热应用程序引擎端点

在热身servlet里面我已经放入了一些代码来启动一些常用的服务,加载一些数据等。效果几乎不可能注意到。

它后,我已经实现了由端点就像暴露方法的调用:

call("/_ah/api/teamly/v1/test/dummy") 

它适用于某些情况下(甚至大部分),并调用几个关键的方法实例之后,真的是准备发球。我现在面临的问题是,如果我使用自动缩放的一些模块I can't route the request to specific instance.

所以,问题是:

我应该如何适当地预热端点实例,以避免启动加载请求前端。

+0

常见的解决方案热身情况是指定一个cron作业,定期打一个给定的App Engine服务的终点,这样情况下,随时准备。 – Nicholas

+0

@Nicholas - 这是我的一个尝试 - 我会看看它是如何工作几天,但仍然 - 这种方法有一些缺点:它不能保证用户不会产生加载请求,并会产生一些额外的成本。 – piotrpo

回答

2

您需要将一个监听器放在/ _ah/warmup中,然后调用任何您希望预热的资源。你可以找到详细的信息:

Configuring Warmup Requests to Improve Performance

+0

你说得对,这就是我想要做的。但是,假设自动或基本缩放 - 您不能确定此资源调用将路由到正确的实例。 – piotrpo

相关问题