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