curl獲取網站的響應時間

curl獲取網站的響應時間html




0.問題瀏覽器


總有人反饋說打開某個頁面比較慢,緩存

可是他們並不清楚到底慢在哪裏。服務器

一樣的問題,網絡

在咱們訪問外部業務的接口時,app

每每也是感受很慢,運維

但就是不清楚慢在哪裏。curl




1.分析iphone


當咱們打開一個網頁,ide

對於一個不須要考慮技術的人,

想象的畫面應該是,

咱們經過地址欄問瀏覽器要個東西,

而後瀏覽器經過咱們提供的地址去對應的服務器取對應的文件,

而後根據服務器的迴應將內容顯示給咱們。


從一個運維人員的視角,

可能就不能這麼簡單粗暴地想象了,

不然可能永遠也沒法確認問題究竟出如今哪裏了。

wKiom1kX67SyNSqHAAKGkcagTis841.png-wh_50



簡單點來歸納下,

1.當咱們打開瀏覽器,在地址欄輸入www.qq.com時,

瀏覽器首先會根據瀏覽器緩存,電腦緩存,電腦hosts文件,DNS服務來解析www.qq.com對應的網絡地址是多少,這個過程會根據解析地方的不一樣而耗時不一樣。


使用瀏覽器緩存和電腦緩存,

返回的結果是最快的,可是可能不是最新的,也多是錯誤的。

經過hosts文件解析域名的優先級是高於DNS服務的解析的,

咱們也能夠在hosts中修改某些域名的解析結果。


2.瀏覽器得到域名相應IP後,開始與服務器進行三次握手進行鏈接。

3.瀏覽器與服務器創建鏈接後向其發起服務請求

4.服務器內部處理完請求後,將處理結果發送給瀏覽器

5.瀏覽器解析服務器發送的結果,而後展現給用戶


wKioL1kX68iS9lg3AAOA_bEGVE0404.png-wh_50


上面簡單描述了瀏覽器在與服務器進行服務請求的過程,

其中任何一個環節耗時太久都將影響到用戶訪問網站的速度。



2.Curl獲取相關數據


使用cur  -w/--write-out l獲取相關數據


幾個比較關鍵的參數:


url_effective 最後獲取的URL。

http_code 上一次HTTP(S)或FTP(S)操做返回的響應碼。在7.18.2版加入的response_code顯示一樣的信息。

http_connect 在最後一次對cURL的CONNECT請求的響應(從代理)中發現的數值代碼。 (在7.12.4版加入)

time_total 所有操做耗費的時間,單位爲秒。精確到毫秒。

time_namelookup 從開始到域名解析完成耗費的時間,單位爲秒。

time_connect TCP鏈接遠程主機(或代理服務器)所耗時間,單位爲秒。

time_appconnect SSL/SSH/等與遠程主機鏈接/握手完成花費的時間,單位爲秒。(在7.19.0 版加入)

time_pretransfer 從開始到文件將要傳輸前花費的時間,單位爲秒。包括指定的協議全部預傳輸命令和negotiations。

time_redirect 全部重定向步驟的時間,包域名解析、鏈接、預傳輸和最後事務開始前的傳輸,單位爲秒。time_redirect顯示多重重定向的完整執行時間。(在7.12.3版加入 )

time_starttransfer  從開始到第一個字節將被傳輸前耗費的時間,單位爲秒。

這包括time_pretransfer和服務器須要的運算結果的時間。

size_download下載的總字節數。

size_upload上傳的總字節數。

size_header 下載的header的總字節數。

size_request 發送的HTTP請求的總字節數。

speed_download curl成功下載的平均下載速度。

speed_upload curl成功上傳的平均上傳速度。





3.獲取請求的耗時信息



針對特定的請求,經過curl能夠獲取到各個環節的耗時狀況,

好比域名解析的耗時,創建鏈接的耗時,服務端處理的耗時,總的耗時。



國內某合做方素材


curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:%{time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n " "http://di.adsame.com/flv_test/20161107143341_231.jpg";


http_code: 200

http_connect:000

content_type:p_w_picpath/jpeg

time_dns:0.005

time_redirect:0.000

time_pretransfer:0.013

time_connect:0.013

time_starttransfer:0.021

time_total:0.029:

speed_download:441815.000


蘋果官網圖片素材


curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:%{time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n " "http://p_w_picpaths.apple.com/v/iphone-7/d/p_w_picpaths/overview/design_hero_large.jpg";


http_code: 200

http_connect:000

content_type:p_w_picpath/jpeg

time_dns:0.449

time_redirect:0.000

time_pretransfer:0.456

time_connect:0.456

time_starttransfer:0.465

time_total:0.493:

speed_download:419293.000

 


微博短域名連接


curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:%{time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n "  -L "http://t.cn/Rip1YJA"


http_code: 200

http_connect:000

content_type:text/html;charset=GBK

time_dns:0.210

time_redirect:0.079

time_pretransfer:0.240

time_connect:0.240

time_starttransfer:0.290

time_total:0.369:

speed_download:4349.000

 


4.其餘


目前只能用curl獲取到指定請求的靜態頁面,仍是沒法像瀏覽器那樣將頁面中的連接都請求到,

這樣就沒法真實反應瀏覽器中訪問頁面的耗時狀況。

不過當用戶反映訪問某個頁面慢的時候,

經過curl訪問對應的地址基本上能夠肯定,

單個請求主要耗時在哪裏。

相關文章
相關標籤/搜索