2016-04-24 41 views
1

我需要使用JMeter保持会话一段时间。JMeter:HTTP持久性连接使用JMeter

测试计划和脚本细节下面给出:

说,例如,100个用户已登录到使用我的web应用程序的他们的个人credential.The会话超时我的web应用程序是30分钟。这意味着,如果这100位用户在登录后30分钟内保持空闲状态,应用程序将保持连接30分钟,以接收来自登录客户端的任何进一步请求。连接将不会关闭。因此,如果客户端需要执行另一个HTTP事务,则它可以使用空闲保持连接而不是创建新的TCP连接。现在,当这100个连接处于活动状态或闲置状态时,我需要确定新登录客户端的响应时间。但是我无法使用JMeter生成这个场景。

这是我的脚本详细信息:简单登录请求最终线程组启动线程数100启动时间120保持加载120关闭时间60恒定吞吐量定时器 - 目标吞吐量(1200 /分钟)。 - >在非GUI模式下运行测试 - >我已经在“HTTP Request”采样器中允许“keepAlive”。

所有的线程在120秒内上升,之后,这个负载将被保持另外120秒。因此,总共240秒的登录请求将被发送(实际上在关机期间)。在我的测试中,大约有6500个登录请求是为100个线程生成的,并且所有登录请求都使用不同的凭据登录。我已经使用CSV数据配置元素来传递数据进行登录。我在执行测试时监视了服务器日志,并观察到所有登录请求都被接受并成功。因此,在实时情况下,如果6500个用户使用不同的机器或PC登录到我的Web应用程序,并且在登录后无需执行任何操作,我的服务器会将连接保持打开状态,持续30分钟以进一步进行HTTP事务处理。我怎么能在JMeter中产生这种情况。或者在我的脚本中,所有这些会话都保持活着吗?

任何建议或指导将非常有帮助。

+0

我想你混淆了TCP层的keepalive(https://en.wikipedia.org/wiki/Keepalive)与HTTP持久连接,有时也被称为 “保活”(https://开头en.wikipedia.org/wiki/HTTP_persistent_connection)。但他们是无关的。此外,应用程序会话依赖于TCP级Keepalive是非常不寻常的,但依靠HTTP持久会话并不罕见。 –

+0

那么,在我的测试脚本中,所有这些6500个请求都会持有他们的会话吗?我用“查看结果树”观察了结果,所有登录请求都生成了具有不同登录凭证的不同会话ID。我必须确保所有这些会话都处于活动状态,同时我必须确定登录请求中新设置(另一个来自不同计算机尝试登录的“X”用户)的响应时间。我怎样才能确定我的第一套(100个用户或线程的6500个请求)保持活动状态?有没有任何工具从服务器端观察这个? – Adnan

+0

如何检查HTTP级别保持活动完全取决于应用程序级别的行为,而不是某些系统参数或通用工具。 I.e .:打开的TCP连接数量不会映射到服务器上当前活动的会话数量。要验证会话是否有效,您需要知道服务器上的活动方式。例如,也许你可以在15分钟后用相同的6500个用户令牌发出一些操作,并确保不需要登录?或者检查Web应用程序中的线程数量(如果线程确实映射到连接,并非总是如此)。有很多可能性。 –

回答

1

从性能角度来看,您的三十分钟超时时间太长。您将锁定会话资源的时间比您需要的时间长得多,以便优先选择一小部分用户。满足您的30分钟边缘情况的开销大于为相同边缘情况创建新会话的开销。

我建议您使用您选择的日志分析工具(我喜欢Splunk>因为它的易用性)并分析您的用户的页面请求之间的时间。这比你想象的要容易得多。消除来自日志的所有静态资源请求,并留下顶层页面请求。你会得到每个请求的时间戳以及它来自的页面(referer标签)。收集任何给定页面的响应时间差异的样本集,然后减去具有相同会话或IP地址(取决于您的体系结构)的参考标记中记录的页面的页面。现在你有一个所有页面到页面等待时间的样本集。

接下来,选择工具并以分钟为单位突出显示这些项目的分布。你通常会发现,页面到页面分组高度聚集在面向公众的站点的1到3分钟范围内。在该范围之外,样品非常迅速地下降。长时间会话会发生什么情况,例如您记下的三十分钟,会锁定在较高负载条件下无法释放导致性能较差的资源。如果您有购物车,这实际上会减慢整个购物车系统,导致转换率降低。会议持有的是上次请求的偏移量,而不是第一次。

2
  • 不需要私人服务,jmeter就足够了。如果我没有弄错你想要做什么是一个高峰测试,你想知道如何创建新的用户会话响应时间增加。
    • 测试通过发送100个请求开始,每个请求都会创建一个新的会话。
    • 如果下一个请求不使用同一个cookie,它将为每个请求创建一个新的会话。
    • 峰值测试会增加负载,直到注入器用完线程或应用程序开始崩溃。
  • 从测试你会得到,这涉及响应时间来加载
    • 这会告诉你什么REPONSE时间预计为一个给定的负载,你可以使用它来进行容量规划的阴谋。
    • 峰值测试是这样的:
    • Load, Throughput and reponse times
  • 是什么,没有一个活跃的用户取决于你的系统(你在测试运行后你会发现哪一个是最好的选择) 。
    • 如果会话管理的实现对大量的cookie是合理的,我将使用所有的会话作为活动,即使是空闲的。 Injector threads
    • 如果应用程序容器同时处理会话,则无论有多少空闲用户,我都会选择活动用户作为系统在给定时刻处理请求的那些用户。
  • 如果您正在进行性能测试以帮助开发人员找到瓶颈,那么您还需要监视资源消耗。
    • JMeter的插件中已经有代理和监视器。