当JMeter中的线程增加时,出现401未经授权的错误

时间:2018-08-03 11:18:23

标签: jmeter unauthorized

我正在运行一个JMeter脚本,在该脚本中,我获得了用于我的HTTP请求采样器的访问令牌(通过在每个请求的标题管理器中使用Bearer $ {AccessToken})。我的HTTP请求被分类为多个简单控制器。

有70个HTTP GET请求,一个线程大约需要20秒才能执行所有请求。

现在,当我不这样做时。的线程数增加,例如从3开始,然后开始出现401错误

({
    "statusCode": 401,
    "error": "Unauthorized",
    "message": "Bad token",
    "attributes": {
        "error": "Bad token"
    }
})

一些请求。但是最终401错误开始变得越来越高,甚至没有。线程数增加,从而降低了启动时间。例如:对于5个请求,加速时间= 30秒。

JMeter Script snapshot

我已经检查过,我的访问令牌调用始终返回一个不同的令牌,该令牌用于每个新的THREAD。所以不知道问题出在哪里:( 到目前为止,我还没有使用任何思考时间,也许这是问题之一,但不确定。

2 个答案:

答案 0 :(得分:0)

通过查看您的http得到的响应,很可能是由于AccessToken的值不正确引起的。

确保您传递正确的AccessToken以获得响应。

如果您有记录的脚本日志,请检查此访问令牌来自何处,并确保您的regular expression extractor正确提取了它。

有关提取变量并在脚本中重用的更多信息,您可以阅读此article.

答案 1 :(得分:0)

如上所述,

Rohit 我已经检查过,我的访问令牌调用始终返回不同的令牌,该令牌用于每个新的THREAD。所以不知道问题出在哪里:((到目前为止,我还没有使用任何思考时间,也许这就是问题之一,但是不确定。

问题是访问令牌仅生成一次,并用于所有70个API GET调用。当线程增加时,将为每个线程生成不同的访问令牌(我检查并发现它们是不同的,所以工作正常),并与它的70个调用一起使用。

现在的问题是,我没有在请求中使用任何计时器,而只是在沉重的负载下掠夺服务器。

当我开始在线程组级别(1000毫秒)和每个简单控制器级别(在这里使用随机函数:$ {__ Random(500,3000)})中使用常量计时器时,它开始工作,并且没有给出任何401 24个线程的未经授权的错误(24 * 70 = 1680 GET请求)。

我将其增加到25个或更高级别时,又一次开始逐渐出现401错误。那么,这是我继续增加计时器值以容纳这么多线程和请求的唯一解决方案,还是有其他合适的方法?最终我需要检查100个线程,即100 * 70 = 7000个请求。