JMeter:使用JMeter进行HTTP持久连接

时间:2016-04-24 04:07:50

标签: performance jmeter load-testing jmeter-plugins

我需要使用JMeter将会话保持一段时间。

测试计划和脚本详情如下:

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

以下是我的脚本详情: - >简单登录请求 - >终极线程组:开始线程计数-100 - >启动时间-120->保持负载为-120->关闭时间-60->恒定吞吐量定时器 - 目标吞吐量(1200 / min)。 - >测试在非GUI模式下运行 - >我已经允许" keepAlive"在" HTTP请求"取样

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

任何建议或指导都会非常有用。

2 个答案:

答案 0 :(得分:2)

  • 没有必要私人服务,jmeter就够了。如果我没有弄错你想要做的是高峰测试,你想知道在创建新用户会话时响应时间是如何增加的。
    • 测试通过发送100个请求开始,每个请求将创建一个新会话。
    • 如果下一个请求不使用相同的cookie,它将为每个请求创建一个新会话。
    • 峰值测试会增加负载,直到进样器用完线程或应用程序开始崩溃为止。
  • 从您将获得的测试,一个将响应时间与负载相关联的图
  • 什么是活跃用户而不是活跃用户取决于您的系统(在您运行测试后,您将找出哪一个最适合选择)。
    • 如果会话管理实现对大量cookie是明智的,我将使用所有会话作为活动,即使是空闲的。 Injector threads
    • 如果应用程序容器同时处理会话,无论有多少空闲用户,我都会选择那些系统正在处理请求的用户作为活动用户。
  • 如果您正在进行性能测试以帮助开发人员找到瓶颈,那么您还需要监控资源的消耗。
    • JMeter已在其插件中安装了代理和监视器。

答案 1 :(得分:1)

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

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

接下来,选择工具并以分钟的形式绘制这些项目的分布图。您通常会发现,对于面向公众的站点,页面到页面分组在一到三分钟的范围内高度聚集。在该范围之外,样品迅速下降。长会话(例如您记下的三十分钟)会发生的情况是,您锁定了在较高负载条件下无法释放的资源,导致性能较差。如果您有购物车,这实际上会降低整个购物车系统的速度,导致转换率降低。会话保持为与上一个请求的偏移,而不是第一个请求。