带有负载测试的 Azure Web 应用程序网关性能

Azure Web Application Gateway performance with load test

我有一个 Visual Studio 负载测试 运行 通过网站上的页面,但在使用负载平衡器时遇到了很大的性能差异。例如,如果我 运行 绕过负载均衡器直接进入 Web 服务器 1 的测试,我得到 100 个用户的平均页面加载时间不到 1 秒。如果我在后面有 2 个 Web 服务器的负载均衡器上进行相同的测试,那么我得到的平均页面加载时间约为 30 秒 - 它开始很快,但随后会恶化。这很奇怪,因为我现在有 2 个负载平衡的 Web 服务器,而不是直接使用 1 个,所以我希望能够增加负载。我现在正在使用 Azure Web 应用程序网关和 Azure VM 对此进行测试。我之前在使用 NGinx 设置时遇到过同样的问题,我认为这是由于该设置造成的,但现在我发现我在 Azure 上也遇到了同样的问题。任何想法都会很棒。

以下列出了帮助我改善相同情况的事项:

  • 添加非 SSL 侦听器并使用它(例如 HTTP 而不是 HTTPS)。显然这不是建议的解决方案,但也许可以给您提示(将 SSL 卸载到后端池服务器?添加更多网关实例?)
  • 禁用 WAF 规则(略有改进)
  • 禁用 WAF + 添加更多网关实例(在我的情况下从 2 个增加到 4 个)- 解决了问题!

我必须完全禁用防火墙才能获得一致的性能。我还 运行 解决了防火墙的其他问题,它给了我们来自安全模块的最大实体大小错误,在与 Azure 支持人员讨论后,无法配置该实体大小,因此保留防火墙意味着一些大页面不会更长的功能并得到这个错误。即使禁用所有规则也会发生这种情况,我花了很多时间试验不同的规则 on/off。 SQL 注入规则似乎不喜欢我们的 ASP.NET 网络表单站点。我现在模拟了 1,000 个并发用户分配给两个测试代理,我们的网站性能良好,平均页面加载时间不到一秒。