HTTPS之TLS性能调优
HTTPS(HTTP over SSL)是以安全为目标的 HTTP 通道,可以理解为 HTTP + SSL/TLS,即在 HTTP 下加入 SSL/TLS 层作为安全基础。其中 TLS 的前身是 SSL,目前广泛使用的是 TLS 1.2。
TLS性能调优
TLS 被普遍认为会使服务变慢,主要是早期 CPU 还很慢,只有少数站点买得起加密服务。但是今天计算能力不再是 TLS 的瓶颈。2010年,Google 默认情况下对其电子邮件服务上启用了加密,之后他们表示 SSL/TLS 不再花费昂贵的计算成本:
在我们的前端服务上,SSL/TLS 计算只占 CPU 负载的不到 1%,每个连接只占不到 10KB 的内存,以及不到 2% 的网络开销。
1. 延迟和连接管理
网络通讯的速度由两个主要因素决定:带宽和延迟。
带宽:用来衡量在单位时间内有多少数据可发送
延迟:描述一个消息从一端发送到另一端接收所需的时间
其中,带宽是次要因素,因为通常你可以随时购买更多带宽;而延迟则是无法避免的,因为它是在数据通过网络连接传输时被强加的限制。
延迟对 TLS 影响特别大,因为它有自己精心设计的握手,在连接初始化的时候额外增加了两个往返。
1.1 TCP优化
每个 TCP 连接都有一个称为 拥塞窗口 的速度极限,这个窗口最初时较小,在可靠性能保证的情况下随时间增长。这种机制被称为 慢启动。
因此,对于所有的 TCP 连接,启动速度很慢,对于 TLS 连接情况则更糟糕,因为 TLS 握手协议消耗了宝贵的初始连接字节(当拥塞窗口较小时)。如果拥塞窗口足够大,那么慢启动不会有额外的延迟。但是,如果较长的握手协议超过了拥塞窗口的大小,发送方必须将它拆分为两块,先发送一块,等待确认(一个往返),增加拥塞窗口,然后再发送剩下的部分。
1.1.1 拥塞窗口调优