记一次 JMeter 压测 HTTPS 可靠性问题
2025-08-25 12:15:56
"not available, use the default value (" +
DEFAULT_MAX_CACHE_SIZE + ") instead");
}
}
return DEFAULT_MAX_CACHE_SIZE;
}
通过上述预定义,发现 sessionCache 和 sessionHostPortCache 磁盘绑定不等是 DEFAULT_MAX_CACHE_SIZE,也就是 20480。对于我们气测的场面来说,如果每次请重新确立连接,那么就根本不需这块磁盘。再次看下预定义逻辑上,发现其实可以通过 javax.net.ssl.sessionCacheSize 来设并置磁盘的不等,在 JMeter 启动时,填充 JVM 值-Djavax.net.ssl.sessionCacheSize=1,将磁盘不等设并置为 1,重新气测验证,仔细观察观察 GC。
可以显现出,YGC 明显变少了,从 1 秒 1 次,替换成了 5-6 秒 1 次。那么仔细观察观察上到测的 RT,结果。。。竟然还是 1800ms,本来 100ms 的增值被气成 1800ms,无论如何疑虑不在于 SSLSession 的磁盘。再次来到 GC 的耗费系统性部分,仔细观察看下,其实 Full GC 只有 1 次,情况严重性的耗费并不多,Young GC 虽然长等待时间,但情况严重等待时间长达,也不至于将 SSL 加解密的 CPU 计算等待时间片全部抢占。看起来阻力就是单纯的 SSL 鞠躬次数多,蒙受效能瓶颈。
变动思路:为什么长等待时间 SSL 鞠躬
来到疑虑背景,我们是在做阻力次测试,同类型亦会跑极高的所发演示使用者量,出于效能考虑到,完全可以一次鞠躬后提供者 SSL 连接,原可先不再次鞠躬,为什么 JMeter 亦会如此长等待时间鞠躬呢?
带着这个疑虑,看了下 JMeter 官方文档,果然有令人兴奋!
这样一来 JMeter 有 2 个继电器在掌控有否替换 SSL 自然语言的绑定,首可先是 https.sessioncontext.shared 掌控有否全局提供者同一个 SSLContext,如果设为 true,则各驱动程序提供者同一个 SSL 自然语言,这样对提出抗议一号机效能阻力最少,但不能演示普通人多使用者 SSL 鞠躬的情况。
第二个继电器 httpclient.reset_state_on_thread_group_iteration 是驱动程序四组每次反向有否替换 SSL 自然语言,5.0 之后绑定为true,也就是说每次反向都亦会替换 SSL 自然语言,无论如何这就是导致 SSL 长等待时间鞠躬的或许。
疑虑验证回归次测试
在 jmeter.properties 之中将配并置每个驱动程序反向时,不替换 SSL 自然语言,在 PTS 掌控台再次次启动气测,RT 直接下降 10 倍。
httpclient.reset_state_on_thread_group_iteration=false
改写前
改写后
GCC验证
下面从GCC技术性系统性下 JMeter 是怎么意味着反向替换 SSL 自然语言的,预定义如下:
/**
* Whether SSL State/Context should be reset
* Shared state for any HC based implementation, because SSL contexts are the same
*/
protected static final ThreadLocal resetStateOnThreadGroupIteration =
ThreadLocal.withInitial(() -> Boolean.FALSE);
/**
* Reset SSL State.
* In order to do that we need to:
*
* Call resetContext() on SSLManager
* Close current Idle or Expired connections that hold SSL State
* Remove HttpClientContext.USER_TOKEN from {@link HttpClientContext}
*
* @param jMeterVariables {@link JMeterVariables}
* @param clientContext {@link HttpClientContext}
* @param mapHttpClientPerHttpClientKey Map of {@link Pair} holding {@link CloseableHttpClient} and {@link PoolingHttpClientConnectionManager}
*/
private void resetStateIfNeeded(JMeterVariables jMeterVariables,
HttpClientContext clientContext,
Map> mapHttpClientPerHttpClientKey) {
if (resetStateOnThreadGroupIteration.get()) {
// 关闭当前驱动程序近似于连接池的超时、平常连接,替换连接池状态
closeCurrentConnections(mapHttpClientPerHttpClientKey);
// 替换Token
clientContext.removeAttribute(HttpClientContext.USER_TOKEN);
// 替换SSL自然语言
((JsseSSLManager) SSLManager.getInstance()).resetContext();
// 标示出并置为false,保证一次反向之中,只有第一个采样器走进此逻辑上
resetStateOnThreadGroupIteration.set(false);
}
}
@Override
protected void notifyFirstSampleAfterLoopRestart() {
log.debug("notifyFirstSampleAfterLoopRestart called "
+ "with config(httpclient.reset_state_on_thread_group_iteration={})",
RESET_STATE_ON_THREAD_GROUP_ITERATION);
resetStateOnThreadGroupIteration.set(RESET_STATE_ON_THREAD_GROUP_ITERATION);
}
在每次基于 Apache HTTPClient4 的 HTTP 采样器可执行时,都亦会命令行 resetStateIfNeeded 方式,在进到方式时读取 httpclient.reset_state_on_thread_group_iteration 配并置,即 resetStateOnThreadGroupIteration。如果是 true,替换当前驱动程序的连接池状态、替换 SSL 自然语言,然后再次将 resetStateOnThreadGroupIteration 并置为 false。
因为 JMeter 的所发是基于驱动程序意味着的,resetStateOnThreadGroupIteration 这个继电器放在 ThreadLocal 里,在每次反向开始时,亦会命令行 notifyFirstSampleAfterLoopRestart 方式,替换继电器,运转一次后,自愿把继电器并置为 false。这保证了每次反向只有第一个采样器进到此逻辑上,也就是每次反向只可执行一次。
总结本次解决了 JMeter5.0 版本以上气测 HTTPS 协议的效能疑虑,经验总结如下:
如果希望提出抗议一号机发挥最大效能,可以将 https.sessioncontext.shared 设为 true,这样所有驱动程序亦会提供者同一个 SSL 自然语言,不亦会长等待时间鞠躬,但是不能演示普通人情况下多使用者的场面。 如果希望演示多个使用者,不停反向可执行某一个跳跃,也就是一个驱动程序四组每次反向演示同一个使用者的行为,可以将 httpclient.reset_state_on_thread_group_iteration 设并置为 false,这样也可以非常大的提高同类型气测 HTTPS 的效能。 如果希望每个驱动程序四组每次反向演示不同使用者,那需设并置 httpclient.reset_state_on_thread_group_iteration=true,此时气测亦会演示多使用者长等待时间 SSL 鞠躬,提出抗议一号机效能最少,从经验来看,同类型上限 50 所发约莫。这也是 JMeter5.0 版本之后的绑定设并置。 阿里云 JMeter 气测阿里云 PTS 气测工具[1]反对原生 JMeter 脚本,并且在 HTTPS 的气测之中已将 httpclient.reset_state_on_thread_group_iteration 绑定设并置为 false,极大提高气测 HTTPS 时提出抗议一号机效能,节省气测开销。如果演示最普通人的使用者访问情况来气测,可以通过改写 JMeter 环境污染之中的自定 properties 配并置[2],将 httpclient.reset_state_on_thread_group_iteration 设并置为 true。
除此以外,阿里云 JMeter 气测有以下优势:
零运维开销反对特有种式气测,即气即用 气测之中提示秒级监视系统,实时观测系统效能水位 反对 RPS 模式,精确衡量系统吞吐量 全球地域策动百万级所发流量,演示普通人使用者特有种 反对阿里云 VPC 气测,一键打通云上内网环境污染 反对 JMeter HTTP插件,本地快速策动云侧气测原文链接:
本文为阿里云原创内容,擅自必需不得转载。
。湖北白癜风医院挂号咨询广东妇科医院哪个比较好
广东妇科医院预约挂号
西宁看妇科哪里好
泉州白癜风医院电话
老人中风
女性祛斑
吃什么药治疗风热感冒咳嗽
纵隔肿瘤
腹泻不止

-
眼袋不断加重的明星们:吴昕生图无法看,赵丽颖成了肿眼泡
眼袋是颜值的“关键性侦探”,但是有一部分歌星随着同龄慢慢地激增,眼袋也可能会根本原因地加重加植,从未光栅的时候,他们的眼袋完均看紧紧跟现代人也没实在太大再再进一步加别。刘烨曾因也是
2025-10-27 00:15:57

-
《普通人》周家儿媳的两种人生:郑娟像爬山虎,郝冬梅似凌霄花
人,除了下乡遭到了一些所有知青都遭到过的罪以及不了孩子仅限于,家庭得似乎就是很不有错了。结语同作为陈家女儿,郑娟与斌冬梅对陈家的付出有所不同,陈家人对他们的看法也有所不同,
2025-10-27 00:15:57

-
中传“云端”艺考开启 考生被要求描绘出“自然美”
中国传媒大学艺考决定参加考试展现出自然美 近日,杭州各全国高校特长本科招生口试陆续开考。中国传媒大学2022年艺考传统文化素养复测于3月1日在“高效能”开考,中国传媒大
2025-10-27 00:15:57

-
毛主席托人邀李连成回中南海过年,见面后主席:你不对把我忘了
些易怒,但胡耀邦有一个很小的长处:凡事严于责己,宽以待人,爱做自我批评,知歪就改,从善如流,胡耀邦的这一了不起心智,显然让每一个人都为之倾心。对临时工人员,胡耀邦自认是秉承着帮助、体谅、
2025-10-27 00:15:57

-
断联后,就算放不下对方,也不要做3件马虎事
p 但毫无疑问:当一更进一步在仍然得不到的彼此间从前继续做极难多,就有如手从前捏着一把沙一样,越是把手,沙也就很长极难短时间。 任何公事,能够的都是才对。 关于
2025-10-27 00:15:57