0%

TCP/IP 协议栈系列(八):HTTPS 性能与优化


了解了之前文章介绍的HTTPS原理后,HTTPS 具备身份验证、信息加密与完整性校验等安全特性,且未对TCP和HTTP协议做任何修改。但通过增加新协议以实现更安全的通信必然需要付出代价,所以 HTTPS 的性能损耗有以下几个方面

延迟增加

这是显而易见的,相比正常的 HTTP 协议,三次握手的过程,增加了 SSL/TLS 的握手过程,一次完整的握手过程至少需要两端依次来回两次通讯,至少增加延时 2 * RTT,即使有会话缓存的情况下,也至少增加了 1 RTT 的延迟

消耗CPU

TLS/SSL 对称和非对称加密算法的加密解密过程需要消耗大量的 CPU 计算

优化思路

CND 接入来降低延迟时间

虽然增加了 2 RTT 的延迟,但是只能考虑如何降低一次 RTT 的耗时,CDN 天然离用户最近,因此选择使用 CDN 作为 HTTPS 接入的入口,将能够极大减少接入延时。CDN 节点通过和业务服务器维持长连接、会话复用和链路质量优化等可控方法,极大减少 HTTPS 带来的延时。

会话缓存来减少 RTT 次数

采用会话缓存也要至少1*RTT的延时,但是至少延时已经减少为原来的一半,明显的延时优化;同时,基于会话缓存建立的 HTTPS 连接不需要服务器使用RSA私钥解密获取 Pre-master 信息,可以省去 CPU 的消耗。

硬件加速提高计算能力

为接入服务器安装专用的SSL硬件加速卡,作用类似 GPU,释放 CPU,能够具有更高的 HTTPS 接入能力且不影响业务程序的。

远程解密

本地接入消耗过多的 CPU 资源,浪费了网卡和硬盘等资源,考虑将最消耗 CPU 资源的RSA解密计算任务转移到其它服务器,如此则可以充分发挥服务器的接入能力,充分利用带宽与网卡资源。

HTTP2

SPDY/HTTP2 利用 TLS/SSL 带来的优势,通过修改协议的方法来提升 HTTPS 的性能,提高下载速度等。

参考资料

HTTPS协议详解(五):HTTPS性能与优化