当我们在google app引擎控制台中将服务器代码切换为新版本时,需要生成大量新实例。因此,我们看到了大约500个错误和很长的响应时间。
缓解这些问题的最佳做法是什么?
答案 0 :(得分:2)
部署期间请求并不总是发生500个响应。以前,您的应用程序的新版本能够不间断地接管来自旧版本的流量,但这似乎在很久以前就停止了。这些500似乎根本不会进入您的应用程序(因为没有请求会显示在您的日志中,并且它们将不会由您的应用程序500页提供服务)。时间窗口也似乎从无,到一分钟不等。
我不知道有任何迹象表明appengine团队正在考虑解决这个问题,虽然这似乎是一个错误(或者至少是一个合理的功能请求)。
要解决此问题,我们通常会部署到其他版本并将其切换为默认版本。一旦提供流量,我们就会部署到之前的版本,然后将其切换回默认值。这样可以不间断地为客户提供服务,但它确实需要(至少在java版本中)一个新版本。
答案 1 :(得分:1)
除了其他人回答re:热身请求之外,你还应该看看流量分割 - “App Engine的流量分割工具允许你在一段时间内慢慢推出应用程序的功能,类似于谷歌的做法在几天或几周推出新功能时,流量拆分还允许您进行A / B测试。流量拆分的工作原理是将传入的请求拆分为不同版本的应用。“
docs https://developers.google.com/appengine/docs/adminconsole/trafficsplitting
答案 2 :(得分:0)
在实际流量定向到实例之前,设置加热应用程序的预热请求:
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