我们在 Azure App Gateway 后面有一个 Sitecore CD(Sitecore 9-更新 1)实例。
我正在对我们的网站进行4000个请求的负载测试。我看到我们的请求中大约有10-15%返回502网关错误。
我们的CPU和内存利用率(Sitecore CD和应用网关)似乎没有问题。我也检查了SQL Server的CPU,看起来也很好。在检查CD日志时,我没有看到任何错误或异常(我看到一些错误,这些错误在负载测试前也会看到)。我只是在Azure应用网关处看到502个网关错误,JMeter也说同样的话。
有什么见解可以说明,这些502网关错误只有10-15%,而其余请求都成功的原因是什么?
如果启用了自动伸缩,那么当新实例竖立起来时,Sitecore还没有100%准备好为请求提供服务,而新实例已经被添加到负载平衡器中。这将导致502代理错误,因为应用网关没有收到来自新实例的正确响应。这归结于冷启动和你的应用程序初始化的配置方式。
确保你的应用初始化到位,在负载平衡器开始向这个新创建的实例发送请求之前,运行一些请求来预热新实例。比如您可以通过在 "应用程序初始化 "配置中指定冷启动。web.config
的关键页面,如下所示。
<system.webServer>
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/" />
<add initializationPage="/key-section1/page1" />
<add initializationPage="/key-section2/page2" />
</applicationInitialization>
</system.webServer>
我们通过增加应用网关的实例来解决这个问题。我们有 3 个应用网关实例,我们正在测试约 4K 的并发用户。根据 azure 支持,大约一个应用网关实例可以处理大约 1K 的请求。