curl请求耗时分析

如果碰到某个请求响应特别慢,可通过curl -w命令及选项设置如下步骤分析原因:

1)新建一个curl.txt文件,写入如下待确认的选项:

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_redirect: %{time_redirect}\n  
time_pretransfer: %{time_pretransfer}\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 

常用的变量如下表所示: 
url_effective    上次访问的URL。 
http_code    上一次 HTTP 或 FTP 数据传输过程中的 response 数值代码。 
http_connect    上一次 CONNECT 请求中的数值代码 
time_total    数据传输消耗的总时间,以秒为单位,精度为毫秒。 
time_namelookup    从数据传输开始到域名解析完成所花费的时间。 
time_connect    TCP连接建立成功所花费的时间。 
time_appconnect    应用层协议,如 SSL/SSH、三次握手等过程完成所花费的时间。 
time_redirect    从跳转链接被**到真正开始从跳转链接下载数据所经过的时间。 
time_starttransfer    从请求连接开始,到第一个字节被传送前所经过的时间。 
size_download    数据传输过程中下载的总数据大小。
size_upload    数据传输过程中上传的总数据大小。
size_header    下载的数据包中,header 字段的总数据大小。
size_request    被发送的 HTTP request 的总数据大小。
speed_download    整个数据传输过程中的平均数据下载速度。 
speed_upload    整个数据传输过程中的平均数据上传速度。 
content_type    被请求访问的文件的 Content_Type 类型。 
num_redirects    访问请求中包含的跳转链接数量。 
redirect_url    跳转链接指向的URL 
ssl_verify_result    SSL验证的结果。值为 0 时表示验证成功。 

2)使用curl命令发出请求

curl -w "@curl.txt" -o /dev/null -s -L "https://www.google.com/

其中的选项说明如下:

-w :从文件中读取要打印信息的格式
-o /dev/null :丢弃响应的内容,只关心请求的耗时情况
-s :不打印进度条

3)测试结果如下,若连接的时间均正常,但耗费总时长过长就要检查排查代码逻辑了。

curl请求耗时分析