Linux Curl 測試訪問速度、TCP交握及SSL交握方式

工作遇到網路訪問時產生的相關問題,可以使用curl進行問題確認、排除,尤其是這陣子工作上進行較多的POC,當問題發生時要能提出證明來驗證不是自己的問題,指令就被越用越熟悉。
本次要介紹是如何驗證回應時間、TCP及SSL交握狀態,來確保自己想的服務狀態是跟實際運行的保持一致,或是異常現象要如何在curl 指令中進行驗證及確認猜測方向。

測試網頁訪問速度

指令執行後會在每階段輸出時間點讓您知道,該如何從哪個節點入手來優化整個訪問網站時的體驗。

$ $ curl -sLo /dev/null -w "time_namelookup:\t%{time_namelookup}\ntime_connect:\t\t%{time_connect}\ntime_pre_transfer:\t%{time_pretransfer}\ntime_start_transfer:\t%{time_starttransfer}\ntime_total:\t\t%{time_total}\ntime_redirect:\t\t%{time_redirect}\nnum_redirects:\t\t%{num_redirects}\nsize_download:\t\t%{size_download}\n" https://www.google.com

time_namelookup:	0.001645
#從開始到完成DNS解析
time_connect:		0.004070
#從開始到完成 TCP 連線
time_pre_transfer:	0.188415
#從開始到準備開始傳輸封包
time_start_transfer:	0.229396
#從開始到接收到第一個封包
time_total:		0.229775
#完成傳輸總時數
time_redirect:		0.000000
#重新導向總耗時,如果沒有重新導向數值會等於0
num_redirects:		0
#重新導向次數,如果沒有重新導向數值會等於0
size_download:		14441
#整個網頁下載的大小

驗證TCP 及 SSL 交握時間

此方式最主要在測試整體連線及交握速度,避開網頁本身運算的影響只計算到完成交握時間。

可以有效確認主機效能或問題是否來自主機本身,甚至是我們在測試Server效能時一個快速判斷的依據。

$ curl -w "TCP handshake: %{time_connect}\nSSL handshake: %{time_appconnect}\n" -so /dev/null https://www.google.com
TCP handshake: 0.003563
SSL handshake: 0.187515

參考來源:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端