用curl排查DNS解析响应等时间
排查:fail to connect to {ip} cannot assign requested address
经查遇到需要测量网络请求时间问题,包括DNS解析、连接、传输等时间。
Linux下的curl命令可以很好的测量网络请求,如下
curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.jd.com
-o表示输出结果到 /dev/null(避免返回数据淹没了时间信息)
-s表示去除状态信息
-w表示列出后面的参数的结果
curl命令支持的参数,有如下
time_connect 建立到服务器的 TCP 连接所用的时间
time_starttransfer 在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
time_total 完成请求所用的时间
time_namelookup DNS解析时间,从请求开始到DNS解析完毕所用时间(记得关掉 Linux 的 nscd 的服务测试)
speed_download 下载速度,单位-字节每秒。
通过该命令,可以计算网络请求中DNS解析、连接、传输及总的时间,进行初步的故障排查。
例如:
time curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time_redirect}:%{time_pretransfer}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download} -d '<?xml version="1.0" encoding="GBK" ?><Cell_Req ver="1.0"><HDR version="1.0" cdma="0" gps="" glong="" glat="" precision=""><src>yun_droid_mapsdk</src><license>KBIH8I09CJK09BN89HILIBHKKXZV8OU</license><imei>111339641496121.6635</imei ></HDR><DRR phnum="" nettype="" inftype="2"><mcc></mcc><mnc></mnc><lac></lac><cellid></cellid><signal></signal><nb></nb><mmac>c0:83:0a:55:1d:91,-65*</mmac><macs>c0:83:0a:55:1d:91,-65*8c:10:d4:e7:91:c6,-76*58:20:b1:55:9c:5d,-74*40:65:a3:63:a2:ee,-74*</macs></DRR></Cell_Req>' http://{ip}/APS/r
200:000:text/xml;charset=GBK:0.005198:0.000000:0.129652:0.129178:0.242116:0.242243:1011.000
real 0m0.255s
user 0m0.006s
sys 0m0.006s
47.88.132.64