我需要使用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中产生这种情况。或者在我的脚本中,所有这些会话都保持活着吗?
任何建议或指导将非常有帮助。
我想你混淆了TCP层的keepalive(https://en.wikipedia.org/wiki/Keepalive)与HTTP持久连接,有时也被称为 “保活”(https://开头en.wikipedia.org/wiki/HTTP_persistent_connection)。但他们是无关的。此外,应用程序会话依赖于TCP级Keepalive是非常不寻常的,但依靠HTTP持久会话并不罕见。 –
那么,在我的测试脚本中,所有这些6500个请求都会持有他们的会话吗?我用“查看结果树”观察了结果,所有登录请求都生成了具有不同登录凭证的不同会话ID。我必须确保所有这些会话都处于活动状态,同时我必须确定登录请求中新设置(另一个来自不同计算机尝试登录的“X”用户)的响应时间。我怎样才能确定我的第一套(100个用户或线程的6500个请求)保持活动状态?有没有任何工具从服务器端观察这个? – Adnan
如何检查HTTP级别保持活动完全取决于应用程序级别的行为,而不是某些系统参数或通用工具。 I.e .:打开的TCP连接数量不会映射到服务器上当前活动的会话数量。要验证会话是否有效,您需要知道服务器上的活动方式。例如,也许你可以在15分钟后用相同的6500个用户令牌发出一些操作,并确保不需要登录?或者检查Web应用程序中的线程数量(如果线程确实映射到连接,并非总是如此)。有很多可能性。 –