【问题标题】:JMeter response times much larger than the requests' latenciesJMeter 响应时间远大于请求的延迟
【发布时间】:2015-10-28 14:41:56
【问题描述】:

JMeter 机器版本:2.13 r13365067、2.11.20140918 | Java:OpenJDK 1.7.0_79 | 操作系统:Debian 8.1

我遇到了一个问题,即在负载注入器上处理某些 HTTP 请求的时间似乎过长,而该负载注入器并没有真正处于负载之下。

来自具有 20 个 vU(具有缓存,在较弱的负载注入器上,JMeter v2.11)和 40 个 vU(没有缓存,在更高规格的负载注入器上,JMeter v2.13)的测试结果文件示例:

<time_stamp>,3257,<request_name>,200,<thread_name>,true,28537,20,20,437
<time_stamp>,5158,<request_name>,304,<thread_name>,true,138,40,40,0

内存在第一种情况下为 75%,在第二种情况下低于 50%。 CPU 似乎没有出现峰值(以 1 秒为间隔测量),并且在两个示例中最高达到 20%。 检查了 JVM 的垃圾收集,在请求时似乎 GC 也没有达到其极限(实际上在测试期间没有任何时候)。

我在启用缓存(通过缓存管理器并选中“使用缓存控制/过期标头...”)的情况下注意到这一点,并且像上面的第二个示例一样,得到不切实际的响应时间 5158女士。

这只发生在迭代过程中的某些步骤和多个线程,但不是全部。

似乎 JMeter 以某种方式处理结果的时间过长,但我看不出我的负载注入器负载过重,导致处理时间为几秒。

很明显,这弄乱了性能统计数据,所以我想知道这是怎么回事。

希望有人能提供帮助。

编辑: @第一个示例:ResponseTime >> Latecy > 0 的情况发生在两台 JMeter 机器(JMeter v2.11、JMeter v2.13)上。

@Second 示例:ResponseTime >> Latecy = 0 的情况在装有 JMeter v2.13 的机器上发生。


第二次编辑: 事实证明,我运行什么 JMeter 版本(或在哪个节点上)并不重要。

正则表达式对我的结果文件进行了处理: 在相同请求的资源中,缓存(延迟=0),带有标头检查,大约 10% 需要 1 秒或多秒。如果没有标题检查,则为 6%。

【问题讨论】:

    标签: caching jmeter response-time


    【解决方案1】:

    您应该在所有节点上运行相同的 JMeter 版本。如果这不能解决问题,请使用 jconsole 监控您的 JMeter 实例资源利用率。

    【讨论】:

    • 我实际上正在使用 VisualVM。在测试期间查看监视器,捕获 CPU 分析。我将可疑采样器结果的时间戳与 GC 活动进行了比较,但我不确定是否能找出规律。
    • 你能看到 CPU 使用率峰值吗?
    • 在响应时间的时间间隔内出现 CPU 峰值。一些可疑样本会在 GC 发生时进行处理(堆中的峰值),但不仅仅在这些期间。还有哪些其他指标可能有助于深入挖掘?
    • 在 JMeter 执行期间,当没有更多可用内存时,CPU 经常被耗尽。可以尝试增加 xmlx/xms JVM 参数,看看是否还有同样的问题?
    • 顺便说一句,我希望您不要在启用侦听器的 GUI 模式下运行测试? (尤其是查看结果树等)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多