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、例子

[root@bcqf ~]# 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM