2011-11-23 80 views
2

我正在尝试使用JMeter 2.5.1进行负载测试。该应用程序使用PHP编写,并使用带有命名会话的标准基于cookie的会话管理。目前,测试计划是一个非常简单的2 HTTP请求和1个线程组中的1个Cookie管理器。 Cookie管理器的Cookie政策设置为兼容性,正如教程所建议的。但是,每次请求会话都会丢失。JMeter 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。任何想法可能造成这种情况?任何帮助是极大的赞赏。

+0

通过启用HTTP Cookie管理器的调试功能,您将获得更多信息:选择Cookie管理器>单击jmeter主菜单中的帮助>单击启用调试。所以你会在jmeter.log中找到Cookie Manager的调试信息。 –

回答

0

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

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

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

到目前为止有损坏是$路径具有不产生负面影响。

如果有任何人向我解释到底发生了什么,我会很感激。

+0

尝试为您的HTTP Cookie管理器启用调试:选择Cookie管理器>单击jmeter主菜单中的帮助>单击启用调试。 –

+0

通过启用HTTP Cookie管理器的调试,您将获得更多信息:选择Cookie管理器>单击jmeter主菜单中的帮助>单击启用调试。所以你会在jmeter.log中找到Cookie Manager的调试信息。 –