当我们在谷歌应用引擎控制台中将服务器代码切换到新版本时,需要生成大量新实例。因此,我们看到大约 500 个错误和较长的响应时间。
缓解这些问题的最佳做法是什么?
当我们在谷歌应用引擎控制台中将服务器代码切换到新版本时,需要生成大量新实例。因此,我们看到大约 500 个错误和较长的响应时间。
缓解这些问题的最佳做法是什么?
在部署期间,请求并不总是发生 500 次响应。以前,您的应用程序的新版本能够不间断地从旧版本中接管流量,但这似乎在很久以前就停止了。这些 500 似乎根本不会进入您的应用程序(因为您的日志中不会显示任何请求,并且您的应用程序 500 页面不会提供它们)。时间窗口似乎也从无到一分钟不等。
我不知道有任何迹象表明 appengine 团队正在考虑解决这个问题,尽管它看起来像是一个错误(或者至少是一个合理的功能请求)。
为了解决这个问题,我们通常部署到不同的版本并将其切换为默认版本。一旦它为流量提供服务,我们就部署到以前的版本,然后将其切换回默认值。这允许为客户提供不间断的服务,但它确实需要(至少在 Java 领域)一个新的构建。
除了其他人回答:预热请求,您还应该查看流量拆分 - “App Engine 的流量拆分工具允许您在一段时间内缓慢推出应用程序的功能,类似于 Google 在推出时所做的事情"
此处的文档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