我们在 JMeter 负载测试中观察到我们的一个 API 的 SSL 握手次数更高。该 API 的 95% 约为 105 毫秒。我们使用 Locust 工具在同一负载生成器上对同一 API 进行了负载测试。令人惊讶的是,P95 响应约为 40 毫秒.
这是我第一次观察到两个工具之间的响应时间存在巨大差异 JMeter 中的 SSL 握手花费了太多时间,并且在 tcp 转储中非常明显。如何解决 JMeter 中的 SSL 握手时间问题。我们在请求中使用 Httpclient4 作为客户端实现
我们还尝试设置所有 ssl 选项,例如 https.default.protocol、https.socket.protocols、https.use.cached.ssl.context、httpclient.reset_state_on_thread_group_iteration、httpclient4.idletimeout、httpclient4.validate_after_inactivity。
请让我知道如何解决 jmeter 中的 ssl 耗时较长问题
关于 SSL 握手,如果您确实有证据证明 JMeter 中的 SSL 握手比其他 HTTP 客户端中的更长 - 您可以为 JMeter 项目提出问题并在那里描述您的发现。
我尝试使用 Taurus 工具重现您的问题,使用 10 个虚拟用户和 100 次迭代访问 https://example.com 网站,JMeter 为 0.09,Locust 为 0.095,这与 Firefox 浏览器和像 cURL 报告这样的工具。
金牛座脚本以防万一您想自己玩:
#JMeter
execution:
- executor: jmeter
concurrency: 10
iterations: 100
scenario: request_example
scenarios:
request_example:
requests:
- https://example.com
和
#Locust
execution:
- executor: locust
concurrency: 10
iterations: 100
scenario: request_example
scenarios:
request_example:
default-address: https://example.com
requests:
- url: /
method: get