首页 >> 试驾 >> 记一次 JMeter 压测 HTTPS 可靠性问题

记一次 JMeter 压测 HTTPS 可靠性问题

2025-08-25 12:15:56

em Property javax.net.ssl.sessionCacheSize is " +

"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插件,本地快速策动云侧气测

原文链接:

本文为阿里云原创内容,擅自必需不得转载。

湖北白癜风医院挂号咨询
广东妇科医院哪个比较好
广东妇科医院预约挂号
西宁看妇科哪里好
泉州白癜风医院电话
老人中风
女性祛斑
吃什么药治疗风热感冒咳嗽
纵隔肿瘤
腹泻不止

上一篇: Redmi Note 11T Pro+ 体验:LCD 中门的「旗舰芯」神机

下一篇: 小米推出米家台灯 1S 增强版:更新全光谱 LED 灯珠,199 元

相关阅读
眼袋不断加重的明星们:吴昕生图无法看,赵丽颖成了肿眼泡

眼袋是颜值的“关键性侦探”,但是有一部分歌星随着同龄慢慢地激增,眼袋也可能会根本原因地加重加植,从未光栅的时候,他们的眼袋完均看紧紧跟现代人也没实在太大再再进一步加别。刘烨曾因也是

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