Linux下使用Curl测试网站响应时间 查看DNS、连接时长【教程】

落芳酱_8295

落芳酱_8295

2026-04-08

312人浏览

原创

正确写法是 curl -s -o /dev/null -w "dns:%{time_namelookup}, connect:%{time_connect}, appconn:%{time_appconnect}, prexfer:%{time_pretransfer}, startxfer:%{time_starttransfer}\n" url,需注意dns缓存干扰、https握手测量及限流规避。

linux下使用curl测试网站响应时间 查看dns、连接时长【教程】

curl -w 输出各阶段耗时的正确参数写法

直接用 curl -w 查响应时间,最常踩的坑是没加 -o /dev/null 或 -s,导致响应体混在输出里,-w 的时间字段根本没法解析。必须把响应内容屏蔽掉,只让格式化的时间数据出来。

  • curl -s -o /dev/null -w "DNS: %{time_namelookup}, TCP: %{time_connect}, TTFB: %{time_starttransfer}, Total: %{time_total}\n" https://example.com
  • %{time_namelookup} 是 DNS 解析完成到发起 TCP 连接前的耗时,单位秒(含小数),不是“纯 DNS 查询时间”,它包含本地 hosts 查找、DNS 缓存命中判断等
  • %{time_connect} 是从开始到 TCP 连接建立完成(三次握手结束),不含 TLS 握手;若用 HTTPS,要加 %{time_appconnect} 才能看完整握手耗时
  • 所有时间变量只在请求成功时有值;遇到 DNS 失败或连接拒绝,整个 -w 输出可能为空或不完整,需配合 -f 判断是否失败

区分 HTTP 和 HTTPS 的 TLS 握手时间测量

HTTPS 站点的延迟瓶颈常卡在 TLS 握手,但默认 %{time_connect} 不包含它。必须显式启用 %{time_appconnect},且注意它的触发条件。

  • 仅当 URL 是 https:// 且 curl 编译时启用了 OpenSSL / GnuTLS / mbedTLS 才有效;用 curl -V 看输出里有没有 SSL 字样
  • 若服务端支持 TLS 1.3,%{time_appconnect} 可能接近 0,因为 1.3 握手和首字节传输合并了,此时要看 %{time_pretransfer} 更准
  • 推荐组合:curl -s -o /dev/null -w "DNS:%{time_namelookup}, Connect:%{time_connect}, AppConn:%{time_appconnect}, PreXfer:%{time_pretransfer}, StartXfer:%{time_starttransfer}\n" https://example.com

排查 DNS 缓存干扰的真实解析耗时

本地 /etc/hosts、systemd-resolved、浏览器 DNS 缓存都会让 %{time_namelookup} 显示极低(如 0.000015),误判 DNS 快。要测真实公网解析,得绕过所有缓存层。

  • 加 --dns-servers 8.8.8.8 强制指定 DNS 服务器,跳过系统配置(注意:此参数要求 curl ≥ 7.33.0)
  • 更彻底的方法是用 dig +short example.com @8.8.8.8 单独测 DNS,再对比 curl 中的 %{time_namelookup} —— 若后者明显更长,说明 curl 在做额外动作(比如尝试 IPv6 AAAA 记录失败后回退)
  • 用 -4 强制 IPv4 可避免 AAAA 查询拖慢 DNS 阶段,尤其对只部署了 A 记录的老站点

批量测试时避免被目标限流或误判超时

连发多次 curl 测平均值很常见,但默认无延时、无 User-Agent、无 Referer,容易触发 WAF 或 CDN 的速率限制,导致后续请求返回 429 或直接断连。

  • 加 --retry 2 --retry-delay 1 避免单次网络抖动影响统计;但别设 --retry-max-time 过小,否则短超时会掩盖真实慢响应
  • 用 -H "User-Agent: curl-monitor/1.0" 模拟合理客户端,部分 CDN 对空 UA 会降权或限速
  • 关键:每次请求后加 sleep 0.5(不要用 0.1),既保证采样密度,又避开多数防护策略的阈值(通常按秒级窗口计数)

真正难的是把 %{time_namelookup} 和 %{time_connect} 的微小差异归因到具体环节——比如是本地 stub resolver 转发慢,还是 upstream DNS 响应毛刺,还是中间某段网络丢包重传。这时候得切到 tcpdump 或 strace -e trace=connect,sendto,recvfrom curl ... 才能定位。单纯靠 -w 输出,永远只能看到结果,看不到路径。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

2023.09.22

549

3

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

2024.03.01

1678

6

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3503

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

795

4

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3263

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

854

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6346

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5390

6

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

2026.05.08

461

31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习