一、使用CURL分析HTTP请求耗时
1. 基本命令结构
curl -o /dev/null -s -w 'dns_resolution: %{time_namelookup}
connect_time: %{time_connect}
appconnect_time: %{time_appconnect}
pretransfer_time: %{time_pretransfer}
starttransfer_time: %{time_starttransfer}
total_time: %{time_total}\n' 'http://baidu.com'
- curl:调用CURL工具。
- -o /dev/null:将服务器返回的数据输出到/dev/null,不保存响应内容。
- -s:启用静默模式(silent),不显示进度条或错误信息,使输出更加简洁。
- -w:指定自定义的输出格式,后面跟随一串格式化字符串。字符串中包含多个变量,用于显示请求各个阶段的耗时。
- 'http://baidu.com':目标URL。
2. 时间变量解析(单位均为秒s)
| 变量名 | 含义 | 解释 | 影响 |
|---|
| %{time_namelookup} | DNS解析时间 | 从请求开始到完成域名解析所需的时间 | 影响请求启动速度,尤其在DNS缓存未命中时显著 |
| %{time_connect} | TCP连接时间 | 从DNS解析完成到完成TCP连接建立所需的时间 | 影响整体请求响应速度,涉及三次握手过程 |
| %{time_appconnect} | SSL握手时间 | 从TCP连接建立到完成SSL握手(如果使用HTTPS)所需的时间。 | 保障通信安全的同时增加请求耗时 |
| %{time_pretransfer} | 从请求开始到文件传输即将开始的时间 | 从请求开始到准备好传输数据的时间,包括所有初始化过程。 | 涵盖数据传输前的准备工作,对整体性能有一定影响 |
| %{time_starttransfer} | 从请求开始到接收到第一个字节的时间 | 从请求开始到服务器开始响应并接收到第一个字节所需的时间,通常反映了服务器的响应速度。 | 反映服务器处理请求的效率,是评估服务器响应性能的关键指标 |
| %{time_total} | 总请求时间 | 从请求开始到请求完成的总耗时,包括所有阶段。 | 综合衡量请求性能的指标,直接影响用户体验 |
3. 命令执行示例
dns_resolution: 0.029
connect_time: 0.058
appconnect_time: 0.528
pretransfer_time: 0.528
starttransfer_time: 0.839
total_time: 0.866
评论区