讨论建站小鸡的速度时,Ping 和带宽测试很有参考价值,但它们回答不了所有问题。同样是“网页转圈”,可能慢在 DNS、建连、TLS,也可能是应用查数据库或调用外部接口。
可以先测一次完整的 HTTP 请求,把等待时间拆开,再决定查线路还是查应用。下面是一套排查起点,适用于 Linux / macOS 的终端。
先选一个没有跳转、内容相对固定的 HTTPS 地址。 把示例域名和路径换成自己的站点:
curl -q --noproxy '*' -4 --http1.1 -sS -o /dev/null \
--connect-timeout 5 --max-time 20 \
-w 'ip=%{remote_ip} code=%{http_code}\ndns=%{time_namelookup} tcp=%{time_connect} tls=%{time_appconnect}\nready=%{time_pretransfer} first=%{time_starttransfer} total=%{time_total} bytes=%{size_download}\n' \
https://example.com/
这里用 -q 避免个人 curl 配置干扰,--noproxy '*' 排除环境代理,固定 IPv4 和 HTTP/1.1 作为第一组基线。请求仍会完整接收响应正文,只是不显示它;不能用这个结果代替浏览器整页加载时间。变量输出方式见 everything curl。
注意:这些时间大多是从请求开始累计的
例如 tcp=0.12、tls=0.20,不代表 TCP 花了 120ms 后,TLS 又花了 200ms。对于上面这种新建直连 HTTPS 请求,可以这样读:
| 阶段 | 近似计算 | 排查方向 |
|---|---|---|
| 名称解析 | dns | 本机解析器、DNS 缓存、解析链路 |
| TCP 建连 | tcp − dns | 到目标 IP 的建连情况 |
| TLS 握手 | tls − tcp | 握手往返、服务端 TLS 处理 |
| 准备就绪到首字节 | first − ready | 请求往返、服务端排队与处理 |
| 首字节到完成 | total − first | 正文接收、传输期间的等待 |
字段定义见 curl 手册。first 是首字节时间,包含前面的准备过程。首字节定义、准备阶段定义。
尤其是 first − ready,不能直接叫“后端执行耗时”,它还包含网络往返、反代等待等因素。最后一段也不等于纯带宽测试,服务器边生成边输出时,同样会拉长这段时间。上表只是定位方向,具体原因还要结合服务端日志确认。
有 CDN 时,分开测入口和源站
正常请求域名,通常测到的是 CDN 入口。需要检查自己的源站时,可以保持域名不变,用 --resolve 指定连接地址:
curl -q --noproxy '*' -4 --http1.1 -sS -o /dev/null \
--connect-timeout 5 --max-time 20 \
--resolve example.com:443:203.0.113.10 \
-w 'code=%{http_code} first=%{time_starttransfer} total=%{time_total}\n' \
https://example.com/
203.0.113.10 是示例地址,需要换成自己的源站 IP。这样 URL 里的域名、HTTP Host 和 TLS SNI 能保持一致,比直接请求 https://IP 更适合虚拟主机场景。名称解析与 SNI 说明
源站需要接受这种访问,而且证书应能被当前 curl 正常验证。若源站只允许 CDN 回源、要求客户端证书,或者用了仅供 CDN 信任的证书,直连失败并不证明网站故障;应在允许访问的环境测,或看回源日志。
对比时,先控制这几个变量
- 状态码和响应大小:200 的页面与 403 的拦截页、301 的跳转页不能直接比。不要一上来加
-L混合多次请求。 - 测试位置和时间:VPS 本机访问自己的站,和家庭宽带跨网访问,观察的是不同路径。多测几次,保留异常值与错误信息。
- 缓存状态:CDN 命中缓存和回源请求要分别看。可以加
-D -查看响应头,但缓存标志因服务商而异。 - 地址族:有 AAAA 记录时,把第一条命令里的
-4改为-6再测,并记录实际连接的 IP;没有可用 IPv6 时不要硬比。
如果单个请求的时间正常,浏览器里仍明显卡顿,再看开发者工具的 Network:图片、脚本、第三方资源、串行请求和前端执行都可能拖慢整页。
欢迎大家补充排查经验:你遇到过“测速很漂亮,网站还是慢”的情况,最后定位到的是数据库、外部 API、CDN 回源,还是其他原因?
点子不错,收藏了
技术贴,收藏学习
技术贴 底层出发
干货帖,收藏了