JMeter:使用 JMeter 的 HTTP 持久性连接

JMeter: HTTP Persistance connection using JMeter

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

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

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

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

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

任何建议或指导都会很有帮助。

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

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

接下来,选择您选择的工具,并按分钟绘制这些项目的分布图。您通常会发现,public 面向站点的页面到页面分组在一到三分钟的范围内高度聚集。在该范围之外,样品会非常迅速地下降。长时间会话(例如您注意到的三十分钟)会发生什么情况,即您锁定了在较高负载条件下无法释放的资源,从而导致性能较差。如果您有购物车,这实际上会减慢整个购物车系统,从而导致较低的转化率。会话是作为最后一个请求的偏移量而不是第一个请求。

  • 私服不用,jmeter就够了。如果我没记错的话,您要做的是峰值测试,您想知道随着新用户会话的创建,响应时间会如何增加。
    • 测试从发送 100 个请求开始,每个请求都会创建一个新会话。
    • 如果下一个请求不使用相同的 cookie,它将为每个请求创建一个新会话。
    • 峰值测试将增加负载,直到注入器 运行 线程不足,或者应用程序开始崩溃。
  • 从测试中您将得到一个将响应时间与负载相关联的图表
  • 什么是活跃用户,什么不是活跃用户取决于您的系统(在您 运行 测试之后,您会发现哪个是最好的选择)。
    • 如果会话管理实现对大量 cookie 敏感,我将使用所有会话作为活动会话,即使是空闲会话。 Injector threads.
    • 如果应用程序容器同时处理会话,无论有多少空闲用户,我都会选择系统在给定时刻处理请求的那些用户作为活动用户。
  • 如果您正在进行性能测试以帮助开发人员发现瓶颈,您还需要监控资源消耗。
    • JMeter 的插件中已经有代理和监视器。