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)测试结果如下,若连接的时间均正常,但耗费总时长过长就要检查排查代码逻辑了。