我正在尝试使用各种工具(包括JMeter)来每秒对SSL握手进行基准测试。我已经成功创建了一个满足我需求的测试计划,除了我现在想要测试每秒SSL握手与SSL会话重用之间的比较。据我了解,默认情况下,Java具有无限大小的SSL会话缓存,并且条目在24小时后过期。
我尝试过使用JMeter属性“https.use.cached.ssl.context”和“https.sessioncontext.shared”,但即使这些属性为false,也无法满足我的需求。如果两者都为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?
答案 0 :(得分:1)
这有效:
编辑(在Kaelen评论之后): 将https.use.cached.ssl.context属性设置为false(使用HTTPClient 3.1 / 4)确实有效,唯一棘手的部分是SSL会话上下文仅在线程组迭代结束时重置即可。在测试计划中,线程组没有迭代,在组内部存在无限循环,直到发生了#个请求。由于线程组从未迭代过,因此未重置SSL上下文。
在这种情况下,删除线程组内的循环并配置线程组中的迭代次数。