用 curl 看一次请求慢在哪儿
把 DNS、连接、TLS 和首字节耗时放在一行里,先看哪一段变长。
先测一遍
下面这条命令忽略响应正文,把各个时间点打印出来。输出单位是秒。
curl -sS -o /dev/null --max-time 10 \
-w 'dns=%{time_namelookup} tcp=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' \
https://example.com/
用相邻时间点作差
这些值从请求开始累积。要估算 TLS 握手时间,可以用 time_appconnect - time_connect。要比较两次请求,尽量使用相同的 URL、网络和 curl 参数。
首次测量受缓存和连接状态影响较大。跑三遍,把异常的一遍连同命令一起留下,通常比只记一个均值更容易复盘。