Jmeter - 为什么linux给出的答案不同于windows?

时间:2013-05-16 14:08:58

标签: redirect jmeter

我在Windows 7上编写了一个测试计划。我在Windows Vista的两台计算机上远程启动了测试。当我尝试在Linux上做同样的事情时出现了一个问题 - 我使用了相同的测试计划。

我可以登录一组用户并模拟他们的行为,但是当我尝试将其记录下来时没有任何反应。

在Windows上,它们是注销但linux给了我空的响应数据。听众显示绿色状态,所以我对正在发生的事情感到困惑。我应该更改属性中的某些内容还是我的脚本有问题?

编辑:

脚本:

  1. 使用授权数据登录用户。每个用户都获得不同的JSESSIONID。
  2. 使用Access Log Sampler模拟用户行为。
  3. 退出用户。
  4. 在Windows上,一切正常,登录和注销。监听器显示:每个样本的样本结果,请求数据和响应数据。

    在Linux上,每个样本的响应数据都是空白的。

    样本结果的示例 windowslinux

    两者的请求数据相同。

    linux的响应数据为空白。

    EDIT2:

    • 测试计划
      • setUP线程组
        • 清理缓存服务器
        • 使用JSESSIONID
        • 清理文件
      • 线程组
        • HTTP请求默认值
        • 登录(仅控制一次)
        • 访问日志采样器
        • 使用beanshell脚本我将JSESSIONID(cookie变量)保存到文件
        • Cookie Manager
      • tearDown Thread Group
        • HTTP请求默认值
        • 从文件
        • 中读取JSESSIONID
        • 退出所有用户
        • Cookie Manager
      • 结果树
      • 摘要报告

    必须在访问日志中的所有样本完成后执行注销。这就是为什么我将JSESSIONID保存到文件以在线程组之间共享相同的会话。

    好吧,不知怎的,我通过回复消除错误。显然,linux服务器上的java版本存在问题。

    目前的问题是,当我在Linux上启动远程脚本时,它不会遵循重定向。 win XP或Vista上的相同脚本遵循重定向,用户注销。 浓淡

    GET connection.rpc?logout=D5D076123FD6CCBF137FE1673F531006 
    

    在Windows上,我得到两个重定向,用户注销。

    Thread Name: Logout 1-1
    Sample Start: 2013-05-18 13:50:52 CEST
    Load time: 15
    Latency: 13
    Size in bytes: 777
    Headers size in bytes: 573
    Body size in bytes: 204
    Sample Count: 1
    Error Count: 0
    Response code: 200
    Response message: OK
    
    Response headers:
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    X-wkpl-server-name: OnlineRC2
    Content-Type: text/html;charset=UTF-8
    Content-Language: en-US
    Content-Length: 204
    Date: Sat, 18 May 2013 11:50:43 GMT
    
    
    HTTPSampleResult fields:
    ContentType: text/html;charset=UTF-8
    DataEncoding: UTF-8
    
    Thread Name:
    Sample Start: 2013-05-18 13:50:52 CEST
    Load time: 13
    Latency: 13
    Size in bytes: 374
    Headers size in bytes: 374
    Body size in bytes: 0
    Sample Count: 1
    Error Count: 0
    Response code: 302
    Response message: Moved Temporarily
    
    Response headers:
    HTTP/1.1 302 Moved Temporarily
    Server: Apache-Coyote/1.1
    Set-Cookie: JSESSIONID=6D3F7A3774ABB1411A5F8E1744004A71; Path=/WKPLOnline
    CacheControl: no-cache
    Pragma: no-cache, no-store
    Expires: -1
    Location: connection.rpc?logout=BE8C04D8538641675A8BFD2490CDDD4D
    Content-Length: 0
    Date: Sat, 18 May 2013 11:50:43 GMT
    
    Thread Name: Logout 1-1
    HTTPSampleResult fields:
    ContentType: 
    DataEncoding: null
    
    Sample Start: 2013-05-18 13:50:52 CEST
    Load time: 2
    Latency: 2
    Size in bytes: 403
    Headers size in bytes: 199
    Body size in bytes: 204
    Sample Count: 1
    Error Count: 0
    Response code: 200
    Response message: OK
    
    Response headers:
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    X-wkpl-server-name: OnlineRC2
    Content-Type: text/html;charset=UTF-8
    Content-Language: en-US
    Content-Length: 204
    Date: Sat, 18 May 2013 11:50:43 GMT
    
    
    HTTPSampleResult fields:
    ContentType: text/html;charset=UTF-8
    DataEncoding: UTF-8
    

    在Linux上我没有重定向,用户也没有注销。

    Thread Name: Logout 1-1
    Sample Start: 2013-05-18 13:51:48 CEST
    Load time: 18
    Latency: 18
    Size in bytes: 264
    Headers size in bytes: 243
    Body size in bytes: 21
    Sample Count: 1
    Error Count: 0
    Response code: 200
    Response message: OK
    
    Response headers:
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Set-Cookie: JSESSIONID=D17A4ABCDE7FB90C1DF702BDCB3827D7; Path=/WKPLOnline
    CacheControl: no-cache
    Pragma: no-cache, no-store
    Expires: -1
    Content-Length: 21
    Date: Sat, 18 May 2013 11:51:53 GMT
    
    
    HTTPSampleResult fields:
    ContentType: 
    DataEncoding: null
    

    这很奇怪,因为在授权期间有一些重定向,Linux正确执行它们。

2 个答案:

答案 0 :(得分:0)

你应该检查jmeter是否正确访问了linux上的jsessionid文件:

  • 检查路径是否正确(否)

  • 检查阅读权限

如果您使用的是分布式测试,则问题可能是代理找不到该文件或某个文件被其他代理覆盖

答案 1 :(得分:0)

问题解决了,是吧:) 事实证明,目标服务器已为某些计算机设置了锁定。在这样的机器上是Linux。这就是我无法在单独的线程中记录用户的原因。

因此,如果有人遇到类似的问题(从一台机器请求被正确处理,而另一台机器请求没有),他应检查他的机器是否有正确的权限,我需要在测试服务器的adm.list中正确输入