curl 命令分析请求耗时

本文详细介绍CURL请求中各性能指标的含义,包括HTTP状态码、数据传输类型、DNS解析时间等,并提供具体示例展示如何使用CURL进行网站请求及性能监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、创建 curl.txt 文件

2、变量含义

3、发送 curl 请求


1、创建 curl.txt 文件

\n
                  http_code:  %{http_code}\n
               content_type:  %{content_type}\n
            time_namelookup:  %{time_namelookup}\n
               time_connect:  %{time_connect}\n
            time_appconnect:  %{time_appconnect}\n
           time_pretransfer:  %{time_pretransfer}\n
              time_redirect:  %{time_redirect}\n
         time_starttransfer:  %{time_starttransfer}\n
             speed_download:  %{speed_download}\n
               speed_upload:  %{speed_upload}\n
              size_download:  %{size_download}\n
                size_upload:  %{size_upload}\n
                            ----------\n
                 time_total:  %{time_total}\n
\n

2、变量含义

http_code :上一次 HTTP 或 FTP 数据传输过程中的 response 数值代码。
content_type :被请求访问的文件的 Content_Type 类型。 
time_namelookup :从数据传输开始到域名解析完成所花费的时间,即DNS解析时间。
time_connect :TCP连接建立成功所花费的时间。 
time_appconnect :应用层协议,如 SSL/SSH、三次握手等过程完成所花费的时间。
time_pretransfer :从请求开始到响应开始传输的时间 
time_redirect :从跳转链接被激活到真正开始从跳转链接下载数据所经过的时间。 
time_starttransfer :从请求连接开始,到第一个字节被传送前所经过的时间。
speed_download :整个数据传输过程中的平均数据下载速度。 
speed_upload :整个数据传输过程中的平均数据上传速度。 
size_download :数据传输过程中下载的总数据大小。
size_upload :数据传输过程中上传的总数据大小。
time_total :数据传输消耗的总时间,以秒为单位,精度为毫秒。 

——————————————————————————————————————

TCP 连接时间 = pretransfter - namelookup

服务器处理时间 = starttransfter - pretransfer

内容传输时间 = total - starttransfer

3、发送 curl 请求

curl https://www.baidu.com -w "@curl.txt" -o /dev/null -s 
  • -w :从文件中读取要打印信息的格式

  • -o /dev/null :把响应的内容丢弃,因为我们这里并不关心它,只关心请求的耗时情况

  • -s :不要打印进度条

### 使用 `curl` 命令进行网络测速 #### DNS 解析时间和 TCP 连接时间 当使用 `curl` 执行网络测速时,可以通过 `-w` 参数定制输出格式以获取详细的性能统计数据。例如,要测量 DNS 查找时间和 TCP 握手时间,可以运行以下命令: ```bash curl -o /dev/null -s -w "DNS Lookup Time: %{time_namelookup}, Connect Time: %{time_connect}\n" https://www.example.com ``` 这条命令将隐藏标准输出并将结果重定向到 `/dev/null`,仅显示 DNS 查询耗时 (`%{time_namelookup}`) 和建立连接所需的总时间 (`%{time_connect}`)[^1]。 #### 数据传输时间 进一步扩展上面的例子,还可以加入其他重要指标如预传输准备时间和第一个字节到达客户端的时间: ```bash curl -o /dev/null -s -w "Pre-transfer time: %{time_pretransfer}, Start transfer time: %{time_starttransfer}\n" https://www.example.com ``` 这里增加了 `%{time_pretransfer}` 表示从开始直到准备好发送数据前的所有必要协商完成所需要的时间,以及 `%{time_starttransfer}` 显示的是首次收到有效负载的第一个字节之前经历的全部延迟[^2]。 #### 总下载时间与速度 对于评估整体表现来说,知道整个事务处理周期长短也很有用处。这包括了所有先前提到的部分再加上实际接收内容所需花费的时间段。下面这个例子展示了如何获得这些信息连同平均下载速率一起呈现出来: ```bash curl -o /dev/null -s -w "Total time: %{time_total}s, Speed download: %{speed_download}bytes/s\n" https://www.example.com/largefile.bin ``` 该命令最后部分提供了总的请求持续期(`%{time_total}`),单位为秒;同时还给出了平均每秒钟成功取得的数据量大小(`%{speed_download}`),其计量单位是字节数/秒[^3]。 --- ### 注意事项 尽管如此强大,但需要注意的是,由于 HTTP 协议本身的特性决定了单次调用可能不足以代表真实的用户体验质量水平,因此建议多次重复试验取平均值得出结论更为可靠一些。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值