前幾天對接一個第三方的介面,通過檢視日誌發現從請求到響應加來花了20幾秒,截圖給對方,對方自己用 postman 測試響應測試是幾十毫秒。就這樣,我們說他們介面有問題,他們說自己介面沒問題,進入了死結。因為是在我程式碼層傳送的請求,所以別人會說是我自己的程式碼效率問題,為了給出證據,通過查詢資料,使用 curl 來請求對方的 webservice 介面來檢視響應時間,如果直接在命令列 curl 請求列印的響應時間很慢,我們就可以懟對方了。
新建一個 format.txt 檔案,內容如下:
\n time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_redirect: %{time_redirect}\n time_pretransfer: %{time_pretransfer}\n time_starttransfer: %{time_starttransfer}\n time_total: %{time_total}\n
新建檔案儲存 webservice 請求體,檔案為 test.xml
請求命令:curl -w "@format.txt" --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:" --data @test.xml http://xxx/xxWebService.asmx
結果如下:
也可以測試其他 http 請求
如果不關注返回結果,可以新增引數 -o /dev/null
引數解析
time_namelookup :解析 dns 時間
time_connect:發起請求,到TCP 請求建立握手時間
time_appconnect:SSL/SSH 等上層協議建立連線的時間,比如 connect/handshake 的時間
time_redirect : 從開始到最後一個請求事務的時間
time_pretransfer:從請求開始到響應開始傳輸的時間
time_starttransfer:從請求開始到第一個位元組將要傳輸的時間
time_total :這次請求花費的全部時間結果
通過該方式測試出對方介面請求到響應在 7 秒左右,但是第二次請求就非常快了,不知道對方是不是做了什麼快取,但對方堅決說沒有、、、
本作品採用《CC 協議》,轉載必須註明作者和本文連結