当使用OAuth 2.0访问令牌时,应该如何在JMeter中处理大量用户?

14ifxucb  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(127)

我有一个JMeter设置,它生成一个访问令牌,该令牌被传递给HTTP Header Manager中的后续线程组。
ThreadGroup(这里是生成承载令牌的位置)
-HTTP请求
-JSON提取器
-BeanShellAssert(这里我使用__setProperty()函数,以便能够跨不同的threadGroup使用令牌)
线程组2(实际测试)
-HTTP请求
--HTTP标头管理器(在此处传递身份验证令牌)
问题是:上面的设置在功能方面工作得很好,但是,当我尝试向ThreadGroup 2添加更多用户时,问题出现了。2具体地说,如果我使用100个用户运行测试,它工作得非常好。3如果我将用户数量增加到150,则所有请求都失败,并显示403禁止,就好像访问令牌不再在请求的HTTPHeader管理器中传递一样。我假设测试运行得太快,JMeter无法计算所有内容(例如通过__setProperty()函数传递访问令牌),所以我尝试在ThreadGroup 2的HTTP Header Manager中硬编码访问令牌,但问题仍然是一样的,我不明白原因,是应用程序方面的原因吗(例如,应用程序无法处理负载,因此失败,但如果是这样的话,为什么403禁止?)或者有没有办法我可以理解为什么会发生这种情况,也许可以修复它?

eni9jsuy

eni9jsuy1#

  • 首先,我建议通过临时启用存储请求和响应数据来检查到底发生了什么。
  • 修改负责结果文件配置的JMeter属性,这样请求和响应详细信息将写入.jtl results file
  • 或者添加一个类似SimpleDataWriter的监听器,这样您就可以选择存储的内容和位置

更多信息:如何在JMeter中保存响应数据

  • 如果您认为是JMeter导致了这个问题,请确保您遵循了JMeter Best Practices,您至少违反了其中的一条,因为不建议使用Beanshell
  • 检查您的应用程序配置和日志。如果您正在为100多个线程使用单个授权令牌,则可能是应用程序不允许这样做的情况。同样,rate limiting也可能是这种情况。我的期望是,您应该为每个线程(虚拟用户)使用单独的令牌,而不是为100多个线程重复使用单个令牌
  • 您的应用程序可能过载,无法支持那么多用户。在这种情况下,您需要确定bottleneck的原因,并报告或修复它。

相关问题