1、HTTPS性能損耗
前文討論了HTTPS原理與優勢:身份驗證、信息加密與完整性校驗等,且未對TCP和HTTP協議做任何修改。但通過增加新協議以實現更安全的通信必然需要付出代價,HTTPS協議的性能損耗主要體現如下:
(1).增加延時
分析前面的握手過程,一次完整的握手至少需要兩端依次來回兩次通信,至少增加延時2* RTT,利用會話緩存從而復用連接,延時也至少1* RTT*。
(2).消耗較多的CPU資源
除數據傳輸之外,HTTPS通信主要包括對對稱加解密、非對稱加解密(服務器主要采用私鑰解密數據);壓測 TS8 機型的單核 CPU:對稱加密算法AES-CBC-256 吞吐量 600Mbps,非對稱 RSA 私鑰解密200次/s。不考慮其它軟件層面的開銷,10G 網卡為對稱加密需要消耗 CPU 約17核,24核CPU最多接入 HTTPS 連接 4800;
靜態節點當前10G 網卡的 TS8 機型的 HTTP 單機接入能力約為10w/s,如果將所有的HTTP連接變為HTTPS連接,則明顯RSA的解密最先成為瓶頸。因此,RSA的解密能力是當前困擾HTTPS接入的主要難題。

2、HTTPS接入優化
(1).CDN接入
HTTPS 增加的延時主要是傳輸延時 RTT,RTT 的特點是節點越近延時越小,CDN 天然離用戶最近,因此選擇使用 CDN 作為 HTTPS 接入的入口,將能夠極大減少接入延時。CDN 節點通過和業務服務器維持長連接、會話復用和鏈路質量優化等可控方法,極大減少 HTTPS 帶來的延時。
(2).會話緩存
雖然前文提到 HTTPS 即使采用會話緩存也要至少1*RTT的延時,但是至少延時已經減少為原來的一半,明顯的延時優化;同時,基于會話緩存建立的 HTTPS 連接不需要服務器使用RSA私鑰解密獲取 Pre-master 信息,可以省去CPU 的消耗。如果業務訪問連接集中,緩存命中率高,則HTTPS的接入能力講明顯提升。當前TRP平臺的緩存命中率高峰時期大于30%,10k/s的接入資源實際可以承載13k/的接入,收效非常可觀。
(3).硬件加速
為接入服務器安裝專用的SSL硬件加速卡,作用類似 GPU,釋放 CPU,能夠具有更高的 HTTPS 接入能力且不影響業務程序的。測試某硬件加速卡單卡可以提供35k的解密能力,相當于175核 CPU,至少相當于7臺24核的服務器,考慮到接入服務器其它程序的開銷,一張硬件卡可以實現接近10臺服務器的接入能力。
(4).遠程解密
本地接入消耗過多的 CPU 資源,浪費了網卡和硬盤等資源,考慮將最消耗 CPU 資源的RSA解密計算任務轉移到其它服務器,如此則可以充分發揮服務器的接入能力,充分利用帶寬與網卡資源。遠程解密服務器可以選擇 CPU 負載較低的機器充當,實現機器資源復用,也可以是專門優化的高計算性能的服務器。當前也是 CDN 用于大規模HTTPS接入的解決方案之一。
(5).SPDY/HTTP2
前面的方法分別從減少傳輸延時和單機負載的方法提高 HTTPS 接入性能,但是方法都基于不改變 HTTP 協議的基礎上提出的優化方法,SPDY/HTTP2 利用 TLS/SSL 帶來的優勢,通過修改協議的方法來提升 HTTPS 的性能,提高下載速度等。






