[轉(zhuǎn)]Qzone高性能HTTPS實(shí)踐

【全文轉(zhuǎn)載自】Qzone高性能HTTPS實(shí)踐

WeTest導(dǎo)讀
自從去年QQ空間移動端頁面開始切換到HTTPS之后纵朋,頁面性能遇到了比較大的挑戰(zhàn)悉尾,HTTPS對頁面訪問速度帶來了比較大的影響熊响,所以我們通過實(shí)踐總結(jié)了一些能夠提升HTTPS頁面訪問速度的方法播演,這些數(shù)據(jù)都是我們和STGW的同事反復(fù)實(shí)驗(yàn)孽江、多次分析所得到的,希望能夠減少大家對于全站啟用HTTPS的顧慮休建。我們的目的是,在不影響用戶體驗(yàn)的情況下评疗,竭盡全力保護(hù)用戶的信息安全测砂!

頁面在切到HTTPS之前,iOS的訪問速度約為1795ms百匆,切到HTTPS之后砌些,iOS的訪問速度直接飆到2630ms,我的天吶加匈,上漲了900ms存璃,接近50%,嚇得我趕緊把入口又切回了HTTP雕拼。之后纵东,便開始踏上了提升HTTPS訪問速度的道路。(文章里的數(shù)據(jù)以iOS為例啥寇,訪問速度指的是頁面html開始請求到頁面js執(zhí)行完畢的耗時)偎球。先簡單以圖示總結(jié)下我們優(yōu)化的結(jié)論:

使用SPDY協(xié)議是我們優(yōu)化的第一步,SPDY(speedy)是Google很早就提出的協(xié)議辑甜,通過多路復(fù)用衰絮、請求優(yōu)先級以及HTTP報頭壓縮,來提升頁面的訪問速度磷醋。但是公司貌似沒有一個統(tǒng)一的平臺支持SPDY猫牡,在尋求了TEG小伙伴的幫助之后,他們首次支持了SPDY子檀。SPDY在iOS的兼容性比較好镊掖,iOS 8.0以上的safari和webview都支持乃戈,覆蓋了Qzone 85%以上的iOS用戶蝴蜓。所以決定開啟HTTPS+SPDY試試效果策泣。開啟SPDY之后的頁面訪問速度提升了370ms,已經(jīng)非常不錯了勇皇。(在SPDY的兼容性上归薛,iOS大部分都支持了谍憔,而安卓tbs內(nèi)核支持SPDY的版本也正在灰度當(dāng)中,全量之后預(yù)計也能覆蓋80%的Qzone用戶主籍。)

根據(jù)第一次SPDY的嘗試习贫,HTTPS的訪問速度有了300多毫秒的提升,但跟HTTP相比差距還是有400ms的差距千元,分析了一下苫昌,這400ms的差距主要是來自于SSL握手的耗時,根據(jù)SPDY協(xié)議幸海,每個域名建立一個TCP連接祟身,各自要進(jìn)行一次SSL握手,每次耗時約200ms物独,頁面一共有兩個關(guān)鍵域名袜硫,所以HTTPS+SPDY一共比HTTP慢了400ms。根據(jù)這個分析結(jié)果挡篓,我們也有了進(jìn)一步的優(yōu)化方向婉陷,那就是減少SSL的耗時。

減少SSL握手的耗時官研,可以有三個方式:
(1)提升TCP連接的復(fù)用率秽澳;
(2)提升SSL session的復(fù)用率;
(3)減少頁面上的域名戏羽。

對于提升TCP連接的復(fù)用率肝集,我們想了一個方法,在頁面的入口處預(yù)建了一個連接蛛壳,在用戶點(diǎn)擊入口之前杏瞻,先向h5.qzone.qq.com(頁面的域名)發(fā)起一個https請求,可以請求一個返回內(nèi)容為空的url衙荐。同時捞挥,服務(wù)器端要開啟keep alive, keep alive的時間也并不是越長越好,我們使用的是60秒忧吟。這個預(yù)建的連接砌函,不止減少了SSL握手的耗時,實(shí)際上同時也節(jié)省了TCP建立連接的時間。根據(jù)我們的實(shí)踐數(shù)據(jù)讹俊,在預(yù)建連接之后垦沉,頁面的訪問速度又提升了400ms。其中仍劈,TCP連接復(fù)用的命中率大約是75%厕倍。

** 對于提升SSL session 復(fù)用率,需要服務(wù)器端支持session ticket或者session cache贩疙,目前我們的STGW是支持了分布式session cache和全局session ticket key讹弯。需要說明一下的是,如果我們前面做了預(yù)建連接这溅,復(fù)用了TCP連接的請求不會再發(fā)生SSL握手组民,也就不需要session復(fù)用。不過還是分享下我們SSL session復(fù)用的實(shí)踐數(shù)據(jù)悲靴。SSL session復(fù)用對大部分安卓用戶的提升非常明顯臭胜,可以把SSL握手耗時從之前的400ms優(yōu)化到100多ms。而對于iOS癞尚,由于本身機(jī)器性能更好庇楞,SSL 握手時間的耗時本身就比安卓用戶少,從之前的200ms優(yōu)化到100ms**否纬,提升了50%,并且iOS由于不支持session ticket蛋褥,只能使用session cache临燃,復(fù)用率比較低。SSL seesion總體的復(fù)用率大約是40%烙心。

對于減少頁面上的域名膜廊,前面說到頁面有兩個關(guān)鍵域名,一個是h5.qzone.qq.com淫茵,一個是cdn域名qzonestyle.gtimg.cn爪瓜。每個域名的SSL握手各多耗時200ms,所以另一個優(yōu)化的方式就是域名收歸匙瘪,把頁面收歸到只有一個域名铆铆,減少一次SSL握手的耗時。于是我們把頁面上qzonestyle.gtimg.cn的js通過代理的方式也收歸到h5.qzone.qq.com丹喻,使這個頁面只有一個關(guān)鍵域名薄货,而h5.qzone.qq.com在入口頁面已經(jīng)做了預(yù)建連接,最大程度減少了TCP和SSL的時間碍论。域名收歸后谅猾,頁面的訪問速度提升了200ms。這種代理收歸的方式,也有另一個好處税娜,Qzone由于業(yè)務(wù)復(fù)雜坐搔,域名非常多,通過中間層代理收歸域名敬矩,再轉(zhuǎn)發(fā)到各個業(yè)務(wù)概行,這樣切換HTTPS對各個業(yè)務(wù)都是透明的,可以說大大降低了我們?nèi)厩袚Q到HTTPS的開發(fā)成本谤绳。

推薦使用的TLS協(xié)議和cipher suite占锯,在協(xié)議和算法層面,我們也做了一些統(tǒng)計來進(jìn)行對比缩筛。在HTTPS握手過程中記錄協(xié)議類型消略、加密套件、握手時間瞎抛,并且將上述內(nèi)容返回給頁面艺演。頁面在記錄用戶的訪問速度之后,上報數(shù)據(jù)的同時桐臊,把上述的協(xié)議類型等數(shù)據(jù)也一同上報胎撤。

從上表可以看出來,TLS1.2協(xié)議的性能要明顯優(yōu)于1.1和1.0断凶。Cipher suite 方面伤提,ECDHE-RSA-AES128-GCM-SHA256和ECDHE-RSA-AES128-SHA256性能最好。ECDHE-RSA-CHACHA20-POLY1305理論上講對性能提升有較大幫助认烁,但是由于iOS不支持該類算法肿男,所以從數(shù)據(jù)樣本上無法體現(xiàn)優(yōu)勢。除了上面所列出來的却嗡,后續(xù)我們依然會進(jìn)行協(xié)議和算法層面的更多性能分析和優(yōu)化舶沛,包括TCP參數(shù)調(diào)優(yōu),握手過程優(yōu)化窗价,SSL record size適配等如庭。

做了以上這些優(yōu)化之后,HTTPS的頁面訪問速度提升了1000+ms撼港,相比HTTP坪它,差距已經(jīng)非常小了。由于TCP復(fù)用帝牡,甚至比之前的訪問速度還要快哟楷。同時,我們還在馬不停蹄地做更多的嘗試否灾,比如開始寫這篇文章的時候還在用SPDY卖擅,寫到結(jié)尾的時候我們已經(jīng)啟用了HTTP/2(喂,難道不是因?yàn)樽髡呤峭涎影Y患者嗎?3徒住)親挎狸,你還有什么理由再不啟用HTTPS?

如何測試HTTPS頁面優(yōu)化結(jié)果
下面断楷,我們來看一下如何測試HTTPS頁面優(yōu)化結(jié)果
1) 點(diǎn)擊進(jìn)入壓測大師產(chǎn)品首頁(http://wetest.qq.com/gaps/ )開通項(xiàng)目锨匆,創(chuàng)建測試,點(diǎn)擊進(jìn)入URL測試冬筒。名稱和描述可以自己填寫恐锣。(圖中示例起始人數(shù)50人,每隔60秒增加50人舞痰,加到200人為上限)

點(diǎn)擊左側(cè)“HTTP直壓“進(jìn)入壓測

輸入合適的測試標(biāo)題和測試設(shè)置
(此圖為動圖土榴,橫屏觀看效果更佳)

2)新建一個客戶端請求,接口壓測包括讀寫接口响牛,讀接口基本是GET請求玷禽,寫接口基本是POST請求。GET請求使用url請求參數(shù)呀打,填寫測試用例的基礎(chǔ)數(shù)值矢赁,選擇正確的URL

配置頁面header信息

3) 隨后進(jìn)行Header的配置,Header的名稱在選定URL的內(nèi)贬丛,打開URL的鏈接(推薦使用chrome瀏覽器)撩银,敲擊F12并刷新頁面,選定Network-Name-Headers-Request Headers(Header的名稱與值均在內(nèi)查看豺憔,如下圖所示)

查看頁面header信息

到這里额获,基本就完成了對https的配置過程了,是不是很簡單焕阿?下面動圖可以再回顧一下操作的流程:

gif動態(tài)圖展示操作的流程
(此圖為動圖,橫屏觀看效果更佳)

WeTest壓測大師運(yùn)用了沉淀十多年的內(nèi)部實(shí)踐經(jīng)驗(yàn)總結(jié)首启,通過基于真實(shí)業(yè)務(wù)場景和用戶行為進(jìn)行壓力測試暮屡,幫助游戲開發(fā)者發(fā)現(xiàn)服務(wù)器端的性能瓶頸,進(jìn)行針對性的性能調(diào)優(yōu)毅桃,降低服務(wù)器采購和維護(hù)成本褒纲,提高用戶留存和轉(zhuǎn)化率。

功能目前免費(fèi)對外開放中钥飞,點(diǎn)擊http://wetest.qq.com/gaps 即可體驗(yàn)莺掠!
如果對使用當(dāng)中有任何疑問,歡迎聯(lián)系騰訊WeTest企業(yè)qq:800024531

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末读宙,一起剝皮案震驚了整個濱河市彻秆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖唇兑,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酒朵,死亡現(xiàn)場離奇詭異,居然都是意外死亡扎附,警方通過查閱死者的電腦和手機(jī)蔫耽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來留夜,“玉大人匙铡,你說我怎么就攤上這事“啵” “怎么了鳖眼?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長即纲。 經(jīng)常有香客問我具帮,道長,這世上最難降的妖魔是什么低斋? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任蜂厅,我火速辦了婚禮,結(jié)果婚禮上膊畴,老公的妹妹穿的比我還像新娘掘猿。我一直安慰自己,他們只是感情好唇跨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布稠通。 她就那樣靜靜地躺著,像睡著了一般买猖。 火紅的嫁衣襯著肌膚如雪改橘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天玉控,我揣著相機(jī)與錄音飞主,去河邊找鬼。 笑死高诺,一個胖子當(dāng)著我的面吹牛碌识,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虱而,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼筏餐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牡拇?” 一聲冷哼從身側(cè)響起魁瞪,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤穆律,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后佩番,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體众旗,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年趟畏,在試婚紗的時候發(fā)現(xiàn)自己被綠了贡歧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赋秀,死狀恐怖利朵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猎莲,我是刑警寧澤绍弟,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站著洼,受9級特大地震影響樟遣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜身笤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一豹悬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧液荸,春花似錦瞻佛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至文搂,卻和暖如春适刀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煤蹭。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工笔喉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疯兼。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓然遏,卻偏偏與公主長得像贫途,于是被迫代替她去往敵國和親吧彪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容