2013-02-18 160 views
0

实践挑战: 我有一个LR脚本,针对被模拟的应用运行,但没有注销按钮(还)。 测试运行正常稳定的响应时间大约为10分钟,但在此之后响应时间达到峰值,服务器进入99%的内存使用率并且事务开始失败。 我怀疑这是由于脚本不会在每次运行后终止这些vuser,并且它会针对未终止的服务器建立大量运行会话。但我可能是错的。 我希望在竞争业务流程后以编程方式关闭每次运行。 我有红色的地方web_set_sockets_option(“SHUTDOWN_MODE”,“ABRUPT”)可以用于此,但我想确保这个功能实际上做我想要什么,'ABRUPT'是什么意思? 关闭会话有更好的方法吗?在录制过程中单击关闭的浏览器不会导致脚本中的任何内容被捕获。在LoadRunner中关闭连接

+0

好吧,我明白了。该应用程序没有注销(照顾会话/关闭它),这是一个错误。我会要求我的团队实施注销和清理代码。 – 2013-02-18 20:02:37

回答

0

根据你的问题,我假设你使用的是WEB/HTML协议。我同意,核心问题是你的应用程序的会话应该更优雅,可能会更快过期。但是,为了在测试时超越这个范围,你可以试试这个。这不是保证,但过去在处理类似情况时有时对我有用。试着改变你的运行时设置的脚本:
运行时设置>浏览器>浏览器仿真

请确保您有检查“模拟在每次迭代新用户”的盒子。您也可以尝试在这里使用其他设置,例如每次迭代清除缓存。这可能会导致每次迭代的网页的新连接设置,具体取决于服务器的会话设置。再次,这不是100%,但它不时为我工作。

+0

脚本开头的web_cleanup_cookies()和web_cach_cleanup()是否与启用“在每次迭代中模拟新用户”相同? AND是在VUgen中设置此选项的路径,并在将脚本上传至Controller用于构建场景之前保存脚本,或者可以为整个场景(在整个场景的设置中)设置此设置,如果是,在哪里要设置? – 2013-04-11 18:06:58

+0

在我的sceenario/VUser脚本中也没有设置定步。这可能导致这种情况发生吗?我只用两个(!)VUsers,所以我的脚本/设置或被测试的应用程序一定有问题。我们已经确定脚本运行速度如此之快,以至于在新的迭代开始之前不会释放内存(我们假设情况可能如此)。任何没有步调的想法/经验可能会导致所描述的pehenomen随着时间的推移发生,即使是少量的用户也是如此。 – 2013-04-11 18:32:05

1

这是会话老化的服务器问题。您的网站的服务器管理员可以调整在给定会话中未发生任何活动的超时值。默认情况下,大多数地方都将此设置为30分钟。根据需要修改它,而不是采用服务器上的默认值。

此外,如果资源在服务器端不断累积,但从未释放,则可能遇到泄漏情况。

+0

好吧,所以'没有发生在给定会话上的活动'应该被设置为比整个业务流程所需的更多一点?然后,会话将在'比整个业务流程多一点'之后发布,对吗? – 2013-02-18 21:08:57

+0

即使有可用的注销选项,大多数人也不会注销。他们只会关闭浏览器或转到其他网站。这将在服务器上留下一组会话变量和附加资源。服务器有一个允许在空闲时间后清除这些信息的设置。我喜欢分析现有的用户,并发现空闲时间超过第98百分位的值。查看现有用户(网站日志)以适当设置您的超时值,以最大程度地降低对用户的影响。 – 2013-02-19 01:14:28

0

试试这个:

web_set_sockets_option("CLOSE_KEEPALIVE_CONNECTIONS", "1"); 
+0

欢迎来到Stack Overflow!尽管这段代码可以解决这个问题,但[包括一个解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高您的帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来挤占代码,这会降低代码和解释的可读性! – kayess 2016-12-13 14:18:54