首页 > 解决方案 > Jmeter-如何在响应标头中提取值并获取该值

问题描述

如何在 jmeter 采样器结果中提取响应标头中的值并获取计数。

我正在运行负载测试,例如说 100 个线程。我的请求将通过负载均衡器到达 4 台服务器。

我需要获取到 ABCHeader 的请求计数:Staging 01,Staging 02,Staging 03,Staging 04。(我从每个请求的响应头中获取)

检查请求是否均匀分布到每个服务器。可能的方法是什么?

我尝试使用正则表达式提取器并提取了值。但我不确定如何获得计数

请检查下面的响应标头:检查 ABCHeader: Staging 04

>     HTTP/1.1 200 OK
>     Date: Thu, 24 Jan 2019 17:13:29 GMT
>     Server: Apache
>     Cache-Control: no-cache, max-age=0
>     Vary: Accept-Encoding
>     Expires: Thu, 24 Jan 2019 17:13:29 GMT
>     X-Content-Type-Options: nosniff
>     X-XSS-Protection: 1; mode=block
>     Strict-Transport-Security: max-age=31536000
>     Set-Cookie: XSRF-TOKEN=fd; expires=Thu, 24-Jan-2019 19:13:29 GMT; Max-Age=7200; path=/;HttpOnly;Secure
>     Set-Cookie: laravelsession=df; expires=Thu, 24-Jan-2019 19:13:29 GMT; Max-Age=7200; path=/; HttpOnly;HttpOnly;Secure
>     ABCHeader: Staging 04
>     Keep-Alive: timeout=5, max=100
>     Connection: Keep-Alive
>     Content-Type: text/html; charset=UTF-8
>     Set-Cookie: abcLB-Staging=df; path=/; Httponly; Secure
>     Content-Length: 2193
>     Content-Encoding: gzip

标签: jmeter

解决方案


最正确的方法是使用sample_variables属性

  1. 将下一行添加到user.properties文件:

    sample_variables=ABCHeader
    

    替换ABCHeader为您在正则表达式提取器中定义的实际 JMeter 变量引用

  2. 下次您在命令行非 GUI 模式下运行 JMeter 测试时,例如:

    jmeter -n -t test.jmx -l result.csv
    

    result.csv文件将包含一个名为包含相关 JMeter 变量值的额外列ABCHeader,因此您将能够区分哪个请求将发送到哪个后端服务器

    在此处输入图像描述

  3. 鉴于您正在测试负载均衡器后面的应用程序,请确保将DNS 缓存管理器添加到您的测试计划中,否则您可能会遇到所有线程只访问一台后端服务器的情况。


推荐阅读