curl测试dns解析时间及tcp连接时间

1、用Linux下的curl命令测量网络请求(分号是分隔符,可以是其他符号):

# curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total}  http://www.baidu.com

0.037:0.209:0.210

-o:表示输出结果到/dev/null-s表示去除状态信息,-w表示列出后面的参数的结果。

而且python也有一个pycurl模块

2、curl命令支持的参数,有如下:

  • time_connect:建立到服务器的 TCP 连接所用的时间
  • time_starttransfer:在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
  • time_total:完成请求所用的时间
  • time_namelookup:DNS解析时间,从请求开始到DNS解析完毕所用时间(记得关掉 Linux 的 nscd 的服务测试)
  • speed_download:下载速度,单位-字节每秒。

通过该命令,可以计算网络请求中DNS解析、连接、传输及总的时间,进行初步的故障排查。

关于nscd的说明:https://www.hi-linux.com/posts/9461.html

3、例子

# curl -o /dev/null -s -w time_namelookup:"\t"%{time_namelookup}"\n"time_connect:"\t\t"%{time_connect}"\n"time_appconnect:"\t"%{time_appconnect}"\n"time_pretransfer:"\t"%{time_pretransfer}"\n"time_starttransfer:"\t"%{time_starttransfer}"\n"time_total:"\t\t"%{time_total}"\n"time_redirect:"\t\t"%{time_redirect}"\n" https://www.baidu.com
time_namelookup:    0.004
time_connect:        0.010
time_appconnect:    0.068
time_pretransfer:    0.068
time_starttransfer:    0.075
time_total:        0.075
time_redirect:        0.000
  • DNS解析耗时:0.004s
  • TCP建立连接的耗时:0.010-0.004=0.06s
  • SSL握手完成耗时:0.068-0.010=0.058s,58ms,多了一层SSL还是很耗时的;
  • server处理数据的时间:0.068-0.068=0,0ms,说明服务器处理很快,如果server耗时较高,就需要分析他的耗时:防火墙->负载均衡->应用->缓存和DB,需要深入分析时间消耗在哪个环节;
  • 总体的耗时:0.075s
  • 整个过程没有redirect,所以redirect的耗时为0

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/24/curl-test-dns-parsing-time-and-tcp-connection-time/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
curl测试dns解析时间及tcp连接时间
1、用Linux下的curl命令测量网络请求(分号是分隔符,可以是其他符号): # curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} ht……
<<上一篇
下一篇>>
文章目录
关闭
目 录