2

我正在尝试使用包括 JMeter 在内的各种工具对每秒 SSL 握手进行基准测试。我已经成功地创建了一个满足我需要的测试计划,除了我现在想测试在使用和不使用 SSL 会话重用的情况下每秒的 SSL 握手次数。据我了解,默认情况下,Java 具有无限大小的 SSL 会话缓存,并且条目在 24 小时后过期。

我尝试使用 JMeter 属性“https.use.cached.ssl.context”和“https.sessioncontext.shared”,但即使这些属性为假,它也不能满足我的需求。当两者都为 false 时,线程中的第一个 HTTPS 请求使用新的会话 id,但之后线程中的每个 HTTPS 请求都重用一个会话 id。即使我将未记录的 Java 属性“javax.net.ssl.sessionCacheSize”设置为 1 以仅允许缓存一个 SSL 会话 ID,如果我有 10 个线程,每个线程总共发出 5 个 HTTP 请求,我会看到 10 个新的 SSL 会话协商,并重用了 40 个 SSL 会话(使用 ssldump 和 STunnel 日志验证)。

是否可以通过 JMeter 或 Java 让每个 HTTPS 请求都使用新的 SSL 会话 ID?

4

1 回答 1

1

这有效:

  • https.use.cached.ssl.context=false 在 user.properties 中设置
  •  并对 HTTP 请求使用 HTTPClient 3.1 或 4实现

编辑(在 Kaelen 评论之后): 将 https.use.cached.ssl.context 属性设置为 false(使用 HTTPClient 3.1/4)确实有效,唯一棘手的部分是 SSL 会话上下文仅在迭代结束时重置线程组的。在测试计划中,线程组没有迭代,组内有一个无限循环,一直运行到发生 # 个请求。因为线程组从不迭代,所以 SSL 上下文没有被重置。

在这种情况下,删除线程组内的循环并配置线程组中的迭代次数。

于 2013-07-31T06:19:43.293 回答