使用 cURL 對Web請求進行效能測試
在做 Web 開發的時候,經常需要對 Web Page 或者 REST-ful API 做簡單的 Benchmark。本文將介紹如何使用 cURL 進行簡單快速的效能評測。本文內容分為以下兩部分:
curl curl -w
使用 curl 檢視載入時間
curl -s -w "%{time_total}\n" -o /dev/null http://www.github.com/ 1.492
可以看到請求時間為 1.492
秒。此時:
-s, --silent -w "%{time_total\n}" -o /dev/null
如果使用 time
可以看到 time_total
的細節:
time curl --silent -o /dev/null http://www.github.com/ real0m0.022s user0m0.004s sys0m0.002s
通常情況 Benchmark 一次的資料並不可靠,可以配合 for loop
傳送多次請求。
curl
預設傳送 GET
請求,也可以傳送 POST, DELETE, PUT
或者更多的請求方式。
使用 curl -w
檢視更多的網路情況
通常情況下一個 HTTP Request 會包含很多步驟,如果想知道 time_total
之外更詳細的資訊,可以參考 man curl
文章中, -w --write-out <format>
。
curl -w <format>
可以支援格式模板,我們可以使用 @template-file-name
的方式對輸出格式進行自定義。
比如將這個模板儲存為 curl-fmt.txt
\n time_namelookup:%{time_namelookup}\n time_connect:%{time_connect}\n time_appconnect:%{time_appconnect}\n time_pretransfer:%{time_pretransfer}\n time_redirect:%{time_redirect}\n time_starttransfer:%{time_starttransfer}\n ----------\n time_total:%{time_total}\n \n
執行命令測試,樣例如下:
curl -s -w "@curl-fmt.txt" -o /dev/null http://www.baidu.com/ time_namelookup:1.101 time_connect:1.130 time_appconnect:0.000 time_pretransfer:1.130 time_redirect:0.000 time_starttransfer:1.164 ---------- time_total:1.165
此時可以看到 DNS lookup, TCP 連結,資料傳傳輸等資訊。