保留的实例和预热请求不起作用

时间:2012-06-04 01:40:00

标签: java google-app-engine

我从来没有能够让这个工作得非常正确而且它太令人不安了:我已经配置了热身请求,但我从未看到它们通过,因此大约10%的请求导致新的实例被刷新并请求获取30秒或更糟。而且由于持续的减速,有时这些旋转需要比平时更长的时间和超时,这是非常可怕的。它是一个弹簧应用程序,因此启动速度非常慢,我可能可以优化不到30秒,但除此之外......我需要预热请求才能工作,因此实例不会满足用户请求,直到它们为止实际上准备好了。

有人说热身请求不起作用,除非你有常驻实例,这是有意义的,所以我报名了每周336小时的打折实例小时,但一小时后我仍然没有看到任何保留的实例创建。即使我杀死所有动态的,也会创建新的动态。

所以我的具体问题是:我是否需要做任何其他事情来设置保留实例?一旦它们启动,那会打开预热请求吗?

我的应用设置:

空闲实例:自动自动

待定延迟:5s-10s

已配置的服务:预热请求

应用服务引擎-web.xml中:

<warmup-requests-enabled>true</warmup-requests-enabled>
<threadsafe>true</threadsafe>

的web.xml:

   <servlet>
   <servlet-name>_ah_warmup</servlet-name>
   <servlet-class>com.google.apphosting.utils.servlet.WarmupServlet</servlet-class>
   </servlet>
   <servlet-mapping>
   <servlet-name>_ah_warmup</servlet-name>
   <url-pattern>/_ah/warmup</url-pattern>
   </servlet-mapping>

我的主要Spring调度程序servlet和appstats servlet也有:

   <load-on-startup>1</load-on-startup>

1 个答案:

答案 0 :(得分:2)

自己想出来。一个更好的谷歌搜索出现了正确的文档页面:

https://developers.google.com/appengine/docs/adminconsole/performancesettings

指定空闲实例时会创建预留实例。所以我将Idle Instances设置从auto / auto更改为2 / auto。就是这样!

性能现在非常稳定,因此我建议任何拥有付费应用的用户至少指定1个空闲实例。

我也确实看到现在为新动态实例提出的热身请求,因此保留实例确实是预热的必要条件。