精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

記一次 JMeter 壓測 HTTPS 性能問題

開發
本次解決了 JMeter5.0 版本以上壓測 HTTPS 協議的性能問題。

問題背景

在使用 JMeter 壓測時,發現同一后端服務,在單機 500 并發下,HTTP 和 HTTPS 協議壓測 RT 差距非常大。同時觀測后端服務各監控指標水位都很低,因此懷疑性能瓶頸在 JMeter 施壓客戶端。

問題分析

切入點:垃圾回收

首先在施壓機觀察到 CPU 使用率和內存使用率都很高,詳細看下各線程 CPU、內存使用情況:

top -Hp {pid}

發現進程的 CPU 使用率將近打滿,其中 GC 線程 CPU 使用率很高

再看下 gc 的頻率和耗時,發現每秒都有 YoungGC,且累計耗時比較長,因此先從頻繁 GC 入手,定位問題。

java/bin/jstat -gcutil {pid} 1000

在壓測過程中,對 JMeter 的運行進程做了 HeapDump 后,分析下堆內存:

可以看到 cacheMap 對象占用了 93.3%的內存,而它又被 SSLSessionContextImpl 類引用,分析下源碼,可以看出,每個 SSLSessionContextImpl 對象構造時,都會初始化 sessionHostPortCache 和 sessionCache 兩個軟引用 Cache。因為是軟引用,所以在內存不足時 JVM 才會回收此類對象。

    // 默認緩存大小
private final static int DEFAULT_MAX_CACHE_SIZE = 20480;

// package private
SSLSessionContextImpl() {
cacheLimit = getDefaultCacheLimit(); // default cache size,這里默認是20480
timeout = 86400; // default, 24 hours

// use soft reference
// 這里初始化了2個默認大小20480的緩存,是頻繁GC的原因
sessionCache = Cache.newSoftMemoryCache(cacheLimit, timeout);
sessionHostPortCache = Cache.newSoftMemoryCache(cacheLimit, timeout);
}

// 獲取默認緩存大小
private static int getDefaultCacheLimit(){
try {
int defaultCacheLimit = GetIntegerAction.privilegedGetProperty(
"javax.net.ssl.sessionCacheSize", DEFAULT_MAX_CACHE_SIZE);

if (defaultCacheLimit >= 0) {
return defaultCacheLimit;
} else if (SSLLogger.isOn && SSLLogger.isOn("ssl")) {
SSLLogger.warning(
"invalid System Property javax.net.ssl.sessionCacheSize, " +
"use the default session cache size (" +
DEFAULT_MAX_CACHE_SIZE + ") instead");
}
} catch (Exception e) {
// unlikely, log it for safe
if (SSLLogger.isOn && SSLLogger.isOn("ssl")) {
SSLLogger.warning(
"the System 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

修改前

修改后

源碼驗證

下面從源碼層面分析下 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<Boolean> resetStateOnThreadGroupIteration =
ThreadLocal.withInitial(() -> Boolean.FALSE);


/**
* Reset SSL State. <br/>
* In order to do that we need to:
* <ul>
* <li>Call resetContext() on SSLManager</li>
* <li>Close current Idle or Expired connections that hold SSL State</li>
* <li>Remove HttpClientContext.USER_TOKEN from {@link HttpClientContext}</li>
* </ul>
* @param jMeterVariables {@link JMeterVariables}
* @param clientContext {@link HttpClientContext}
* @param mapHttpClientPerHttpClientKey Map of {@link Pair} holding {@link CloseableHttpClient} and {@link
private void resetStateIfNeeded(JMeterVariables jMeterVariables,
HttpClientContext clientContext,
Map<HttpClientKey, Pair<CloseableHttpClient, PoolingHttpClientConnectionManager>> 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 協議的性能問題,經驗總結如下:

  1. 如果希望施壓機發揮最大性能,可以將 https.sessioncontext.shared 設為 true,這樣所有線程會共享同一個 SSL 上下文,不會頻繁握手,但是不能模擬真實情況下多用戶的場景。
  2. 如果希望模擬多個用戶,不停循環執行某一個動作,也就是一個線程組每次循環模擬同一個用戶的行為,可以將 httpclient.reset_state_on_thread_group_iteration 設置為 false,這樣也可以很大的提高單機壓測 HTTPS 的性能。
  3. 如果希望每個線程組每次循環模擬不同用戶,那需要設置 httpclient.reset_state_on_thread_group_iteration=true,此時壓測會模擬多用戶頻繁 SSL 握手,施壓機性能最低,從經驗來看,單機上限 50 并發左右。這也是 JMeter5.0 版本之后的默認設置。
責任編輯:張燕妮 來源: 阿里云云棲號
相關推薦

2020-03-19 09:58:20

運維架構技術

2011-08-12 09:30:02

MongoDB

2023-04-06 07:53:56

Redis連接問題K8s

2021-05-13 08:51:20

GC問題排查

2021-03-29 12:35:04

Kubernetes環境TCP

2023-01-03 10:30:00

Java工具

2021-11-11 16:14:04

Kubernetes

2023-10-11 22:24:00

DubboRedis服務器

2021-11-23 21:21:07

線上排查服務

2020-11-16 07:19:17

線上函數性能

2020-08-10 11:00:02

Python優化代碼

2022-01-17 09:18:28

JMeter分布式壓測

2022-02-08 17:17:27

內存泄漏排查

2021-03-01 06:14:50

環境高并發延遲

2021-10-14 10:53:20

數據庫查詢超時

2017-07-07 16:07:41

2014-08-11 09:31:52

2022-01-07 11:48:59

RabbitMQGolang 項目

2017-07-10 07:55:50

虛擬化Windows IO云計算

2025-07-31 01:47:00

點贊
收藏

51CTO技術棧公眾號

色综合欧美在线| 日韩av二区在线播放| 日韩欧美一级精品久久| 欧美日韩在线观看一区| 正在播放亚洲精品| 91精品国产成人观看| 亚洲国产天堂网精品网站| 噼里啪啦国语在线观看免费版高清版| 欧美69xxxx| 成人黄色777网| 国产精品v片在线观看不卡| 亚洲综合中文字幕在线观看| 黄色成人在线免费观看| 日韩在线免费播放| 国产精品白丝av| 国产91对白在线播放| 992在线观看| 欧美交a欧美精品喷水| 欧美日韩亚洲另类| 国产肥臀一区二区福利视频| 精精国产xxxx视频在线| 91免费国产在线观看| 成人免费网视频| 91在线视频在线观看| 成人a'v在线播放| 亚洲国产毛片完整版| 亚洲一级片av| 日本一道高清亚洲日美韩| 亚洲图片欧美色图| 3d精品h动漫啪啪一区二区| 一二三区免费视频| 一区视频在线| 久久五月情影视| av手机在线播放| 男人的天堂久久| 日韩精品免费| 精品久久久久久久大神国产| 在线看无码的免费网站| 青青久在线视频| 成人免费va视频| 亚洲最大成人免费视频| 在线观看中文字幕网站| 久久一综合视频| 国产91精品青草社区| www.av视频在线观看| 欧美一区二区| 久热爱精品视频线路一| 国产一二三av| 区一区二视频| 深夜成人在线观看| 成人小视频免费看| 精品国产乱码久久久久久1区2匹| 日韩精品亚洲视频| 中文文字幕文字幕高清| 国产一区二区三区亚洲| 精品电影一区二区| 波多野结衣先锋影音| 欧美挤奶吃奶水xxxxx| 日韩高清人体午夜| 少妇按摩一区二区三区| 国产精品视频一区二区三区四蜜臂| 亚洲精品wwww| 57pao成人永久免费视频| 亚洲精品国产suv一区88| 麻豆传媒在线免费| 亚洲免费观看高清| 精品一区二区三区毛片| 四季久久免费一区二区三区四区| 亚洲自拍与偷拍| av女优在线播放| 亚洲三级欧美| 欧美图区在线视频| 色乱码一区二区三区在线| 深夜日韩欧美| 欧美成人精精品一区二区频| 大桥未久恸哭の女教师| 日韩影视在线观看| 一区二区三区www| 午夜黄色福利视频| 午夜天堂精品久久久久| 性欧美暴力猛交69hd| 香蕉影院在线观看| 精品在线免费视频| 成人动漫视频在线观看完整版| 人妻无码中文字幕免费视频蜜桃| 91首页免费视频| 亚洲国产日韩欧美| 欧美卡一卡二| 欧美日韩激情小视频| 一区二区成人网| 亚洲精品在线播放| 日韩精品视频免费在线观看| 精品一区二区三孕妇视频| 中文在线日韩| 2019av中文字幕| 欧美在线xxx| 亚洲国产综合久久| 日本aⅴ免费视频一区二区三区| 亚洲va欧美va国产综合剧情| 无码精品黑人一区二区三区| 国产精品久久久久久久久动漫| wwwjizzjizzcom| 欧美成人影院| 日韩欧美一区二区久久婷婷| 受虐m奴xxx在线观看| 国产精品黑丝在线播放 | 91在线视频导航| 天堂网在线资源| 中文字幕一区二区三区视频| av在线播放亚洲| 成人影院在线免费观看| 欧美va在线播放| 国产福利在线导航| 伊人激情综合| 成人精品久久久| 男女视频在线观看| 亚洲第一福利视频在线| caoporm在线视频| 偷拍视屏一区| 欧美精品videossex88| 中文字幕欧美在线观看| 91在线观看免费视频| 佐佐木明希av| 日韩午夜电影免费看| 亚洲欧美国产va在线影院| 精品无码一区二区三区电影桃花| 久久精品国产99久久6| 免费99视频| 国产va在线视频| 日韩欧美专区在线| 搜索黄色一级片| 日本少妇一区二区| 欧美视频观看一区| 人成在线免费网站| 日韩成人激情在线| www.99re7.com| 天天操天天干天天爽| 国产高清不卡一区二区| 在线观看一区二区三区三州| 日韩免费小视频| 亚洲欧美日韩爽爽影院| 日韩精品1区2区| 成人黄色大片在线观看| 国产在线视频在线| 亚洲精品在线播放| 欧美激情免费视频| 性做久久久久久久久久| 一区二区三区影院| 国产成人av片| 伊人久久婷婷| 国产区一区二区| 欧美激情网站| 日韩成人在线免费观看| 中文字幕亚洲精品在线| 91在线观看视频| 欧美国产日韩在线播放| 欧美日韩性在线观看| 日韩女优在线播放| av在线天堂| 欧美精品一卡两卡| 青草影院在线观看| 成人听书哪个软件好| 国产日韩欧美精品在线观看| 日韩极品少妇| 国产精品18久久久久久麻辣| 97最新国自产拍视频在线完整在线看| 欧美性大战久久久久久久| 亚洲欧美综合7777色婷婷| 精品一区二区三区在线观看国产| 一道本在线观看视频| 亚洲一区网址| 欧美亚州一区二区三区| a天堂在线资源| 91精品国产丝袜白色高跟鞋| www.99re7.com| 国产午夜精品久久| 午夜精品免费看| 狠狠综合久久| 欧美极品视频一区二区三区| 天天爽天天爽夜夜爽| 精品九九在线| 亚洲影影院av| 免费看男女www网站入口在线 | 亚洲日本香蕉视频| 91国内精品野花午夜精品| 日本裸体美女视频| 成人白浆超碰人人人人| 精品免费国产一区二区| 婷婷综合视频| 精品在线不卡| 91精品福利观看| 91精品国产91久久久| www.在线播放| 亚洲成人av中文字幕| 亚洲av无码不卡| 亚洲一区在线观看视频| 国产又粗又猛又爽视频| 国产自产高清不卡| 99精品视频在线看| 一区二区三区四区日韩| 欧洲精品亚洲精品| 亚洲不卡在线| 国产精品久久久久久久久久久久久久| 日韩精品卡一| 最近2019年日本中文免费字幕 | 久久久久久一区二区三区四区别墅| 欧美精品999| 欧美性videos| 亚洲欧美在线一区二区| 国产 欧美 自拍| 日韩福利视频网| 久久久精品在线| 青青草在线免费观看| 欧美一区二视频| aaa在线视频| 洋洋成人永久网站入口| 国产免费嫩草影院| 91啪亚洲精品| 东京热av一区| 国产剧情在线观看一区二区| 亚洲国产精品三区| 老鸭窝91久久精品色噜噜导演| 成人毛片100部免费看| 日韩影院二区| 日本一区二区三区免费看| 美女呻吟一区| 国产精品裸体一区二区三区| 六九午夜精品视频| 国产精品444| 亚洲欧美电影| 17婷婷久久www| 高h视频在线播放| 欧美巨大黑人极品精男| 久久黄色美女电影| 中文字幕在线看视频国产欧美在线看完整| 亚州视频一区二区三区| 亚洲成人a级网| 日本精品一二区| 精品国产99国产精品| 99久久亚洲精品日本无码| 欧美四级电影在线观看| 国产成人精品一区二区色戒| 日本精品一区二区三区四区的功能| 久草精品视频在线观看| 亚洲一级二级在线| 久久午夜鲁丝片午夜精品| 一区二区三区免费在线观看| 亚洲 欧美 变态 另类 综合| 国产精品美女久久久久久久 | 久久成人国产精品| 麻豆网在线观看| 久久伊人91精品综合网站| 黄色视屏免费在线观看| 成人97在线观看视频| 97caopron在线视频| 欧美日韩成人在线播放| 日本伦理一区二区| 亚洲性色视频| 97精品国产97久久久久久粉红| 久久国产影院| 黄色免费高清视频| 午夜天堂精品久久久久| 免费拍拍拍网站| 国产精品美女久久久| 国产欧美高清在线| 免费看黄色91| 亚洲成人手机在线观看| 懂色av一区二区三区免费看| 污污内射在线观看一区二区少妇| 91麻豆免费观看| 大吊一区二区三区| 亚洲人成网站在线| 日韩精品一卡二卡| 日韩欧美中文免费| 亚洲天堂中文字幕在线| 日韩一区二区在线观看| 神马午夜在线观看| 一区二区欧美在线| 在线观看a级片| 91精品国产91久久久久福利| av在线日韩| 96精品久久久久中文字幕| 久久a爱视频| 日韩欧美亚洲日产国产| 亚洲女同一区| 黑人糟蹋人妻hd中文字幕| 免费观看一级特黄欧美大片| 日本泡妞xxxx免费视频软件| 91免费版在线| 亚洲波多野结衣| 欧美性xxxx极品高清hd直播| 91麻豆成人精品国产| 亚洲国模精品一区| 在线观看a视频| 午夜精品久久久99热福利| 国产精品蜜月aⅴ在线| 动漫一区二区在线| 国产一区二区三区四区二区| 欧美一区二区三区综合| 久久久久久一区二区| www.偷拍.com| 国产亚洲女人久久久久毛片| 久久久精品一区二区涩爱| 日本高清视频一区二区| 二区三区在线视频| 中文字幕av日韩| 麻豆mv在线看| 444亚洲人体| 成人无号精品一区二区三区| 国产免费黄色小视频| 国产在线不卡一卡二卡三卡四卡| 亚洲天堂网一区二区| 一区2区3区在线看| 一级做a爰片久久毛片16| 日韩电影中文 亚洲精品乱码| 91精选在线| 国产精品亚洲片夜色在线| 香蕉久久精品| 亚洲精品天堂成人片av在线播放 | 在线观看免费黄网站| 99精品国产视频| 欧美又粗又大又长| 欧美日韩高清在线| jizzjizz在线观看| 4438全国成人免费| 国产66精品| 成人在线视频一区二区三区| 久久99在线观看| 欧美丰满老妇熟乱xxxxyyy| 天天色图综合网| 成人无码一区二区三区| 欧美成人国产va精品日本一级| 久久精品 人人爱| 日韩欧美亚洲日产国产| 日韩精品高清不卡| 日韩av在线看免费观看| 懂色aⅴ精品一区二区三区蜜月| 亚洲第一天堂影院| 精品中文字幕在线观看| 国产一区二区三区免费观看在线 | 久久精品国产亚洲av麻豆| 亚洲成人av在线电影| 亚洲美女福利视频| 久久久久国产精品免费| 91精品短视频| 国产一区二区三区乱码| 成人免费观看av| 日本熟女一区二区| 亚洲国产精品网站| 擼擼色在线看观看免费| 欧美激情第六页| 久久久久看片| 欧美另类69xxxx| 欧美群妇大交群中文字幕| 香蕉视频在线看| 亚洲一区二区中文| 综合久久99| 精品人妻在线视频| 午夜精品久久久久久久99樱桃| 香蕉av在线播放| 国产91露脸中文字幕在线| 激情五月综合网| 久热精品在线观看视频| 亚洲人午夜精品天堂一二香蕉| 国产精品无码天天爽视频| 久久国产精品久久国产精品| 一区二区三区自拍视频| 国产免费黄色小视频| 国产婷婷精品av在线| 一卡二卡在线视频| 欧美日韩成人在线视频| 欧洲vs亚洲vs国产| 成人在线观看a| 中文字幕一区二区不卡| 国产高潮流白浆喷水视频| 午夜精品蜜臀一区二区三区免费| 偷拍视屏一区| 午夜国产福利在线观看| 一区二区欧美国产| 伦理片一区二区三区| 成人福利网站在线观看| 亚洲福利精品| 91国模少妇一区二区三区| 欧美日韩精品一区二区在线播放| 18av在线播放| 免费精品视频一区| 久久99九九99精品| 日本在线小视频| 中文字幕日韩综合av| 视频一区中文字幕精品| 久久国产乱子伦免费精品| 亚洲图片你懂的| 神马久久久久| 91九色视频在线观看| 久久精品伊人| 中文字幕人妻一区二| 亚洲欧美综合另类中字| 亚洲福利合集| 老头吃奶性行交视频| 亚洲国产精品影院|