curl命令分析网站请求耗时
使用 curl 命令分析网站请求耗时
在进行网站性能优化或网络故障排查时,了解请求各环节的耗时至关重要。curl 命令提供了强大的 -w (write-out) 参数,允许用户自定义输出格式,从而精确分析 DNS 解析、TCP 连接、SSL 握手及内容传输等阶段的时间消耗。
方法一:使用格式文件
为了获得更清晰的可读性,建议将输出格式定义在一个单独的文件中。
1. 执行命令
curl -w "@curl-format.txt" -o /dev/null -s -L "https://www.jd.com"2. 格式文件内容
创建名为 curl-format.txt 的文件,内容如下:
# cat curl-format.txt
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_redirect: %{time_redirect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n3. 参数含义说明
- time_namelookup:DNS 解析耗时。
- time_connect:TCP 连接建立耗时(包含三次握手)。
- time_appconnect:SSL/SSH 等上层协议连接建立耗时(如 SSL 握手)。
- time_redirect:重定向耗时(包含所有重定向请求的时间)。
- time_pretransfer:从请求开始到即将传输第一个字节前的总耗时(包含 SSL 握手等)。
- time_starttransfer:从请求开始到第一个字节即将传输的时间(包含服务器处理时间)。
- time_total:本次请求花费的总时间。
示例输出与耗时分析
1. 命令执行结果
# curl -w "@curl-format.txt" -o /dev/null -s -L "https://www.jd.com"
time_namelookup: 0.529108
time_connect: 0.688685
time_appconnect: 1.201098
time_redirect: 0.000000
time_pretransfer: 1.201304
time_starttransfer: 1.418342
----------
time_total: 1.5408652. 关键阶段耗时计算
基于上述输出,可以计算出各个网络阶段的具体耗时:
- DNS 查询时间:
0.529108秒 TCP 连接时间:
time_connect - time_namelookup- 计算:
0.688685 - 0.529108 = 0.159577(约 159ms)
- 计算:
服务器处理时间:
time_starttransfer - time_pretransfer- 计算:
1.418342 - 1.201304 = 0.217038(约 217ms)
- 计算:
内容传输时间:
time_total - time_starttransfer- 计算:
1.540865 - 1.418342 = 0.122523(约 122ms)
- 计算:
方法二:命令行直接指定格式
如果不希望创建额外的格式文件,也可以直接在命令行中通过 -w 参数指定输出格式。
# curl -w "%{time_namelookup}\n%{time_connect}\n%{time_pretransfer}\n%{time_starttransfer}\n%{time_total}" -o /dev/null -s -L "https://www.jd.com"
0.014314
0.018578
0.044222
0.293051
0.701479说明:以上命令适用于大多数 Linux 及 macOS 环境下的 curl 版本。Windows 用户若使用 PowerShell 或 CMD,可能需要注意引号转义或换行符的差异。具体可用变量请参考本地 man curl 文档。 版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/curl-ming-ling-fen-xi-wang-zhan-qing-qiu-hao-shi.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。