2

在使用 Jmeter 进行性能测试时,我的 Web 应用程序出现了一些问题。我的问题不是围绕 Jmeter,而是围绕一个简单的 Servlet 会话管理行为。

因此,我们有一个 Web 应用程序,当您请求登录页面时,它会在响应标头中传回一个“会话 ID”,并用于浏览器发出的后续请求。会话 ID 与用户名和密码一起传递,如果经过身份验证,则返回一个新的会话 ID,并使用该会话 ID 继续保持会话。这是使用cookies。

现在在 Jmeter 中,我们有一个基于线程的负载测试方法。当我并行运行线程时,本质上发生的是每个线程都请求一个登录页面,并且不知何故,只有最后一个请求登录页面的线程经过身份验证,因为我觉得 cookie 中带有新会话 ID 的后续登录页面会使旧的或其他会话 ID。

尽管每个线程都是一个不同的会话并且有自己的 cookie 管理器,但还是会这样做。这很奇怪。

但是我的问题是:

  1. 登录页面附带会话 ID 是否有意义?我看到可能会在访问应用程序后立即创建会话,但是,是什么设置了带有会话 ID 的新 cookie?这个应用程序已经写好了,所以我只是想知道。

  2. 如果每个线程的会话 ID 在 jmeter 中被覆盖,这是否意味着我无法正确分配单独的 cookie 管理器?此外,即使线程是不同的会话,是否有可能会丢弃旧的会话 ID 或 cookie?

服务器如何知道使后续请求的会话 id/cookie 无效?我敢肯定,不是请求者的 IP 地址,因为不同的浏览器仍然会让我打开并行的多个会话。

任何关于这个问题的想法、澄清和说明都将不胜感激。

4

2 回答 2

0

服务器只会让会话超时,这听起来肯定像是你在这里写完了cookie。

您是否尝试过通过在 url 中包含会话 ID 来查看它是如何管理的(模拟在浏览器中禁用 cookie)这有效吗?

于 2009-09-08T12:18:56.660 回答
0

这完全解决了吗?我会说在登录页面中有一个会话 ID 是很不寻常的。会话用于存储数据服务器端并将该数据与连接的用户相关联。当然,在对用户进行身份验证之前,不应该有任何数据服务器端。

于 2012-05-14T09:09:14.840 回答