我在Azure网络服务上使用JMeter运行负载测试。 我使用4个实例在S2上扩展我的服务,并运行JMeter 4实例,每个实例有500个线程。
它开始很好但是一段时间后调用开始失败并给出Timeout错误(HTTP状态:500)。
我已经检查了azure上的HTTP请求队列,发现在第二个实例上它非常高,两个实例非常低。
请帮助我成功完成负载测试。
答案 0 :(得分:1)
我假设您使用的是Azure App Service。如果您检查应用程序的设置,您会注意到默认情况下将启用ARR的实例关联。简要说明:
ARR巧妙地通过为用户提供一个特殊的cookie(称为亲和力cookie)来跟踪连接用户,这允许它在后续请求时知道他们正在与哪个服务器实例进行通信。这样,我们可以确定一旦客户端与特定服务器实例建立会话,只要他的会话处于活动状态,它就会继续与同一服务器通信。
这是会话敏感应用程序的一项重要功能,但如果不是您的情况,那么您可以安全地禁用它以改善实例之间的负载平衡,并避免出现您所描述的情况。
Disabling ARR’s Instance Affinity in Windows Azure Web Sites
答案 1 :(得分:0)
这可能是由于在JVM或操作系统级别上缓存了网络名称解析,因此您的所有请求都只能访问一台服务器。如果是这种情况 - 请将DNS Cache Manager添加到您的测试计划中,它应该可以解决您的问题。
有关更详细的说明和配置说明,请参阅The DNS Cache Manager: The Right Way To Test Load Balanced Apps文章。