首页 > 解决方案 > 通过 httpclient4 实现配置 Jmeter 采样器时 CPU 使用率比 Java 实现少得多

问题描述

在运行 JMeter 执行时,使用带有实现 httpclient4 的采样器导致 CPU 使用率低于通过 Java 执行。任何人都可以建议为什么,以及推荐哪一个来进行更好的性能测试?

标签: jmeterimplementation

解决方案


HTTP 客户端实现使用线程池模式,因此当不再使用连接时,它会返回到池中,而当下一个线程需要连接时,它只需从池中获取一个。

在 Java 实现中,无法控制如何重用连接,由 JVM 决定是保持连接还是关闭连接。建立连接是一项非常“昂贵”的操作,因此我的期望是您会因此而看到差异。

这只是一个“盲目的尝试”,未知因素太多,您可以使用分析器工具来比较两者,看看究竟是什么导致了 CPU 负载。

Java 实现还有一些限制,例如:

  1. 不支持多个客户端证书(别名)
  2. 不支持虚拟主机
  3. 仅支持以下HTTP 方法:GET、POST、HEAD、OPTIONS、PUT、DELETE 和 TRACE

所以我建议尽可能使用 HTTPClient(实际上这是 JMeter 的默认设置)


推荐阅读