访问一个平时只需80毫秒打开的页面,某次却卡了接近半秒。浏览器先等DNS,再等TCP连接,随后完成TLS握手,最后才轮到自己执行接口逻辑。粗看像是服务器响应慢,实际可能是域名解析换了路径、三次握手遭遇重传,或服务端在构建证书链时浪费了时间。把这些阶段混在一起看,日志里只会留下一个笼统的“建立连接耗时”。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:sixtynet(全球云服务器),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
如果是自建或临时部署服务,也可以先用随身服务器做一组可重复的连通性测试,记录不同时间和网络路径下的握手结果,作为后续定位的基线。
当客户端已经拿到目标IP,TCP三次握手结束后,TLS客户端会发送ClientHello,服务端返回ServerHello,并继续协商版本、密码套件和会话票据。以TLS 1.3为例,常规握手通常还要经过一次应用数据往返,才能完成密钥确认并传输请求。服务器证书、签名验证和密钥派生,也都发生在这段时间附近。因此,TLS握手慢并不等于证书文件大,而是要区分网络往返、本地计算和证书链处理。

会话复用是另一条路径。客户端保存会话票据后再次连接,可以尝试使用0-RTT会话复用,把部分早期数据提前发送;但只有服务端支持、票据仍有效且抗重放策略允许时才会生效。若连接始终出现完整握手,就要检查票据是否被接受、过期,或者客户端是否实际禁用了0-RTT。复用失败本身未必是根因,却能把客户端往返和服务端排队的影响暴露出来。
证书链构建同样值得单独观察。客户端不仅要验证服务端证书,还要补齐并校验中间证书。若服务端下发的是不完整链,部分客户端会通过额外查询补链,部分客户端则直接报错。若链很复杂、缓存失效,或者验证发生在高负载进程中,这段证书链构建可能明显拉长握手。抓包确认线上究竟交换了哪些证书,比只看服务器配置文件更可靠。
第一步记录DNS耗时。直接解析结果很快,但业务域名每次都变慢,应检查递归解析、缓存命中率和返回地址是否漂移。DNS慢发生在TLS之前,不能算作握手耗时。
第二步测TCP握手RTT。连续采样并记录SYN到SYN-ACK、SYN-ACK到最终ACK的时间。如果首个SYN没有立即回应,随后又出现相同序号的重传,通常指向网络抖动、丢包或拥塞。乱序则可能让后续报文等待缺失片段。此时TLS字段里的cipher或certificate时间差,往往只是继承了TCP延迟,而不是TLS自身变慢。

第三步把TLS与应用响应分开。客户端应分别保存DNS完成、TCP连接完成、TLS握手完成和首字节到达时间;服务端则记录接受连接、完成证书验证、写入ServerHello及处理首个请求的时间戳。两端时间戳需要先校准时钟。若客户端看到TLS阶段多出数百毫秒,而服务端处理时间稳定,且重传与乱序明显,问题更偏向网络路径。
反过来,如果网络RTT稳定,服务端从读取ClientHello到密钥派生完成之间持续变慢,就应检查证书链大小、验证缓存、密钥运算和事件循环阻塞。若TLS握手已经结束,首字节仍迟迟不来,瓶颈则转移到应用排队、数据库查询或业务计算。不要用整条curl耗时直接代替TLS耗时,也不要只测一次:本机缓存、连接复用和临时调度波动,都会制造误判。
若链路跨地域,TCP握手RTT先构成下限:TCP 三次握手完成前,TLS ClientHello 无法发送。连接池未命中时,应分别记录 TCP 建连、TLS 协商和应用首字节;复用连接则要确认票据有效。TLS 1.3 会话恢复通常仍须等待服务器确认;启用 0-RTT会话复用后,客户端可在握手完成前发送早期数据,首字节因此提前,但没有消除网络往返。
0-RTT 并非所有业务都能用。早期数据可能被重放,只适合幂等请求,并应配置反重放窗口;敏感写入须等待握手完成。还要区分“会话恢复”和“0-RTT”:前者减少握手计算与报文量,后者允许提前发送数据。若只比较 TLS握手耗时,容易漏掉连接池未命中、票据过期、代理重新建连等成本。

全量握手才涉及证书发送和 证书链构建。服务端若临时扫描证书目录、读取中间证书或阻塞查询吊销状态,耗时就会叠加在握手尾部。应预加载证书链,确认中间证书齐全,并分别记录链构建 CPU 时间与发送时间;不要把吊销查询延迟都算成网络 RTT。缓存失效、链顺序错误或客户端信任库差异,也会造成同一服务偶尔走全量握手。
抓包要同时看 TCP 序列号、重复 ACK、重传和应用时间线。重传与乱序会抬高有效 RTT:TLS 报文乱序会触发缓冲等待,关键报文丢失则可能让握手停到超时。短时大量重传通常指向拥塞、路径抖动或接收端处理慢,而非 TLS 套件本身。可关闭 0-RTT 做 A/B 对照,但须固定链路、连接池和证书条件。
最终检查清单:①记录 DNS、TCP、TLS、首个应用字节的单调时钟时间戳;②抓取完整握手,标注重传、乱序和等待区间;③核对 TLS 版本、会话票据、0-RTT 状态及反重放配置;④验证证书链缓存与中间证书;⑤分别测试冷连接、恢复连接和 0-RTT;⑥在客户端、服务端、代理三处对齐指标。先确定耗时落在哪一段,再处理建连、票据或证书路径,通常比盲目调整密码套件有效。