4

我从来没有能够让它正常工作,它是如此令人不安:我已经配置了预热请求,但我从来没有看到它们通过,所以大约 10% 的请求会导致一个新实例被启动并且请求需要 30 秒或更差。而且由于持续的放缓,有时这些旋转需要比平时更长的时间并且超时,这太可怕了。这是一个 spring 应用程序,启动速度非常慢,我可能会优化到不到 30 秒,但除此之外......我需要预热请求才能工作,因此实例在它们之前不会服务用户请求其实准备好了。

有人说,除非你有常驻实例,否则预热请求不起作用,这是有道理的,所以我注册了 336 小时/周的折扣实例小时,但一个小时后我仍然看不到创建任何保留实例。即使我杀死了所有动态的,也会创建新的动态。

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

我的应用设置:

空闲实例:自动自动

等待延迟:5s-10s

配置的服务:预热请求

appengine-web.xml:

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

网页.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 Dispatcher servlet 和 appstats servlet 也有:

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

1 回答 1

2

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

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

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

性能现在很好而且很稳定,所以我建议任何拥有付费应用程序的人指定至少 1 个空闲实例。

我也确实看到了新动态实例的热身请求,因此保留实例确实是热身的要求。

于 2012-06-04T19:10:34.910 回答