在谷歌应用程序引擎中推出新版本的最佳实践是什么



当我们在谷歌应用程序引擎控制台中将服务器代码切换到新版本时,需要生成大量新实例。因此,我们看到大约500个错误和较长的响应时间。

缓解这些问题的最佳做法是什么?

500个响应并不总是在部署期间对请求进行响应。以前,你的应用程序的新版本能够在不中断的情况下接管旧版本的流量,但这似乎在很久以前就停止了。这些500似乎根本不会进入您的应用程序(因为在日志中不会显示任何请求,并且它们不会由应用程序500页面提供服务)。时间窗口似乎也从零到一分钟不等。

我不知道有任何迹象表明appengine团队正在考虑解决这个问题,尽管它看起来像是一个bug(或者至少是一个合理的功能请求)。

为了解决这个问题,我们通常会部署到不同的版本,并将其切换为默认版本。一旦它提供了流量,我们就部署到以前的版本,然后将其切换回默认版本。这允许不间断地为客户提供服务,但它确实需要(至少在java领域)一个新的构建。

除了其他人回答re:预热请求外,你还应该考虑流量拆分-"应用引擎的流量拆分工具允许你在一段时间内缓慢推出应用程序的功能,类似于谷歌在几天或几周内推出新功能时的做法。流量拆分还允许你进行a/B测试。流量拆分通过将传入请求拆分到应用程序的不同版本来工作。"

此处的文档https://developers.google.com/appengine/docs/adminconsole/trafficsplitting

设置预热请求,以便在实际流量被引导到实例之前加载应用程序:

Python:https://developers.google.com/appengine/docs/python/config/appconfig#Warmup_Requests

Java:https://developers.google.com/appengine/docs/java/config/appconfig#Warmup_Requests

转到:https://developers.google.com/appengine/docs/go/config/appconfig#Inbound_Services

PHP:https://developers.google.com/appengine/docs/php/config/appconfig#Warmup_Requests

相关内容

最新更新