JMeter在“检索所有嵌入式资源”方面运行缓慢-如何扩展?

b5buobof  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(148)

顶级域名:

  • 如果我选择“Retrieve all embedded resources”,JMeter将只抓取1个测试用户。
  • 如果我使用100个用户进行测试,JMeter将抛出Uncaught Exception java.lang.OutOfMemoryError: Java heap space in thread Thread
  • 如何最终扩展到测试数千个用户?
    更多详细信息:

我正在使用BlazeMeter Chrome扩展记录jmx脚本。用户登录,完成一个课程和一个测试。在这个过程沿着有很多 AJAX 请求。脚本大约有350 - 400个步骤。大多数是ajax POST请求,有一个json响应。
当我在Chrome中手动点击时,网站加载速度很快。也许一个页面加载最多需要2秒钟。
但是,当我将“Retrieve all embedded resources”和“Parallel downloads”设置为6并运行该脚本时(在最初只有1个用户的GUI中),它会快速完成,比如说,7个步骤,然后就挂起,有时在前进到下一个步骤之前会挂起10多分钟。如果我取消选中“检索所有嵌入式资源”,但我不想这么做,因为这不是一个现实的测试。
如果我进行同样的测试,并在100个用户中运行它(从命令行使用JVM_ARGS='-Xms4096m -Xmx4096m' sh jmeter -n -t myfolder/mytest.jmx -l myfolder/testresults.jtl),我会得到Uncaught Exception java.lang.OutOfMemoryError: Java heap space in thread Thread,我的计算机风扇会发疯。
我配置了一个HTTP缓存管理器,只选中了“处理GET请求时使用Cache-Control/Expires头”,并且我将“缓存中的最大元素数”降低到了10,因为这是我可以让测试运行的唯一方法。
理想情况下,我希望一次测试数千个用户,但如果我不能可靠地测试100个用户,我就不明白如何扩展到数千个用户。
我看到还有其他基于云的测试选项,我现在已经尝试了一些,但是当涉及到如何测试登录用户时,我总是停下来。似乎大多数解决方案都不支持这一点。
感觉像是很多人在过去都应该遇到过的事情,但是我发现几乎没有人遇到过这些问题。在Web应用程序上对数千个登录用户进行负载测试的正确方法是什么?

c9qzyr3d

c9qzyr3d1#

1.如果JMeter在检索嵌入式资源时“挂起”了10分钟,那么这个特定的资源就有问题,您可以使用ViewResultsTree监听器查看每个资源的响应时间,然后为这个特定的“慢”组件引发bug,或者使用HTTP Request Defaults将其从作用域中排除。您还可以在这里指定超时,如果请求在给定的时间范围内没有返回响应-它将被标记为失败,这样您就不必等待10分钟:

1.您增加堆的方式是正确的,4Gb似乎不够,您必须提供更多或考虑切换到distributed testing
1.如果你的电脑风扇坏了,这意味着CPU的使用率很高,因此JMeter很可能无法足够快地发送请求,所以你会得到假阴性的结果。

相关问题