Retrieve All Embedded Resources 不是下载资源
Retrieve All Embedded Resources is not downloading resources
我有一个非常简单的 Jmeter 测试计划,它带有一个线程组并由基本配置元素支持。
我的 HTTP 请求采样器只是指向应用程序的主页,它提供了登录身份验证的便利。
要分享的事实很少
当我访问chrome中的页面并在chrome开发人员中查看加载时间时,同样是在5秒内完成并并行下载嵌入式资源。
当我通过 jmeter 记录相同内容并开始重播时,需要 12 秒
接下来我禁用了所有非html资源并标记主页下载嵌入资源
当我启用“使用并行下载方式下载所有嵌入式资源”复选框并将值设置为 6 时,jmeter 进入挂起状态。
我认为这可能是 Jmeter 设置的问题,然后我尝试了 www.w3schools.com 网站,我能够在主页和重播期间参考所有嵌入的资源已下载。
请帮助我了解我尝试编写脚本的页面是否涉及任何安全问题,我们无法通过脚本下载并行资源,或者可能的更正方法。
应用程序可通过 https 协议访问。
堆转储
"Image Fetcher 0" Id=5734 TIMED_WAITING on java.util.Vector@567840bf
at java.lang.Object.wait(Native Method)
- waiting on java.util.Vector@567840bf
at sun.awt.image.ImageFetcher.nextImage(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
"ResDownload-Thread-5659" Id=5709 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
...
"ResDownload-Thread-5521" Id=5704 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
...
"ResDownload-Thread-5545" Id=5703 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
...
"ResDownload-Thread-5555" Id=5702 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
如果您从企业进行测试并因此拥有企业代理,则您访问的网站可能需要一些规则以允许下载所有资源,因此您可能需要调整命令行选项:
此外,请注意您不应对您的应用程序可能正在使用的第三方网站(Google 分析、跟踪器...)进行负载测试,因此请使用排除模式来忽略它。
您说 JMeter 挂起,要调试,请使用“帮助”>“创建线程转储”并在您的问题中显示输出文件的内容。
我的猜测是它正在尝试建立连接,因为它没有访问它挂起,所以你可以在 HTTP Request 的高级选项卡中设置:
- 连接超时
- 响应超时
确保勾选浏览器开发人员工具中的 Disable cache
框:
因为您的浏览器可能没有发出实际请求并从磁盘或内存缓存返回嵌入式资源
- 将 HTTP Cache Manager 添加到您的测试计划中以模拟浏览器缓存。
- JMeter might fail to recognise certain resources like images embedded in CSS files so it might be the case you're suffering from a JMeter bug. So you can consider using i.e. Parallel Controller 作为边缘情况的解决方法。
我有一个非常简单的 Jmeter 测试计划,它带有一个线程组并由基本配置元素支持。 我的 HTTP 请求采样器只是指向应用程序的主页,它提供了登录身份验证的便利。
要分享的事实很少
当我访问chrome中的页面并在chrome开发人员中查看加载时间时,同样是在5秒内完成并并行下载嵌入式资源。
当我通过 jmeter 记录相同内容并开始重播时,需要 12 秒
接下来我禁用了所有非html资源并标记主页下载嵌入资源
当我启用“使用并行下载方式下载所有嵌入式资源”复选框并将值设置为 6 时,jmeter 进入挂起状态。
我认为这可能是 Jmeter 设置的问题,然后我尝试了 www.w3schools.com 网站,我能够在主页和重播期间参考所有嵌入的资源已下载。
请帮助我了解我尝试编写脚本的页面是否涉及任何安全问题,我们无法通过脚本下载并行资源,或者可能的更正方法。
应用程序可通过 https 协议访问。
堆转储
"Image Fetcher 0" Id=5734 TIMED_WAITING on java.util.Vector@567840bf
at java.lang.Object.wait(Native Method)
- waiting on java.util.Vector@567840bf
at sun.awt.image.ImageFetcher.nextImage(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
"ResDownload-Thread-5659" Id=5709 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
...
"ResDownload-Thread-5521" Id=5704 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
...
"ResDownload-Thread-5545" Id=5703 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
...
"ResDownload-Thread-5555" Id=5702 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at sun.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.SynchronousQueue$TransferStack@c26b878
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
如果您从企业进行测试并因此拥有企业代理,则您访问的网站可能需要一些规则以允许下载所有资源,因此您可能需要调整命令行选项:
此外,请注意您不应对您的应用程序可能正在使用的第三方网站(Google 分析、跟踪器...)进行负载测试,因此请使用排除模式来忽略它。
您说 JMeter 挂起,要调试,请使用“帮助”>“创建线程转储”并在您的问题中显示输出文件的内容。
我的猜测是它正在尝试建立连接,因为它没有访问它挂起,所以你可以在 HTTP Request 的高级选项卡中设置:
- 连接超时
- 响应超时
确保勾选浏览器开发人员工具中的
Disable cache
框:因为您的浏览器可能没有发出实际请求并从磁盘或内存缓存返回嵌入式资源
- 将 HTTP Cache Manager 添加到您的测试计划中以模拟浏览器缓存。
- JMeter might fail to recognise certain resources like images embedded in CSS files so it might be the case you're suffering from a JMeter bug. So you can consider using i.e. Parallel Controller 作为边缘情况的解决方法。