JMeter cookie管理器破坏了cookie值

时间:2011-11-23 06:59:15

标签: php jmeter

我正在尝试使用JMeter 2.5.1进行负载测试。该应用程序使用PHP编写,并使用标准的基于cookie的会话管理和命名会话。目前,测试计划是一个非常简单的2 HTTP请求和1个线程组内的1个Cookie管理器。 Cookie管理器的cookie策略设置为兼容,如教程所示。但是,会话仍然会在每个请求中丢失。

在第一页调用中,会话已初始化。我在session_start调用之前和之后打印了以下信息:

before session start:
  session_name() = 'PHPSESSID'
  session_id() = ''
  $_COOKIE = array (
  )

after session start:
  session_name() = 'sasExtSMSESSID'
  session_id() = 'ihl8svsbl76au7h1ccn3c0ci61'
  $_COOKIE = array (
  )

在第二页呼叫中,该会话应该已经设置。但似乎JMeter的cookie管理器的cookie被破坏了:

before session start:
  session_name() = 'PHPSESSID'
  session_id() = ''
  $_COOKIE = array (
    'sasExtSMSESSID' => 'ihl8svsbl76au7h1ccn3c0ci61, sasExtSMSESSID=ihl8svsbl76au7h1ccn3c0ci61',
  )

after session start:
  session_name() = 'sasExtSMSESSID'
  session_id() = '2ro2bkd3t3liq76h7lqn603gm7'
  $_COOKIE = array (
    'sasExtSMSESSID' => 'ihl8svsbl76au7h1ccn3c0ci61, sasExtSMSESSID=ihl8svsbl76au7h1ccn3c0ci61',
  )

因此,似乎cookie数组以某种方式被破坏,并且由于会话ID无效,因此会生成新的。除了调用session_name()session_start()之外,应用程序中没有任何特殊处理cookie。使用浏览器访问页面也有效。所以我想我没有正确配置JMeter。知道是什么导致了这个吗?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我不确定这是否真的是一个答案,因为我仍然不知道发生了什么,但我想这是其他人可能从中受益的解决方案。

将Cookie管理器的策略从兼容性更改为默认值让我回避这个问题,因为腐败显然发生在cookie变量的另一部分:

session_name() = 'sasExtSMSESSID'
session_id() = 'gknq98q7fpecjciti3da9l6mj7'
$_COOKIE = array (
  '$Version' => '0',
  'sasExtSMSESSID' => 'gknq98q7fpecjciti3da9l6mj7',
  '$Path' => '/, sasExtSMSESSID=gknq98q7fpecjciti3da9l6mj7',
)

到目前为止,$ Path已损坏并未产生任何不利影响。

仍然会感谢任何人向我解释这里发生的事情。