天天看點

WebApi系列~HttpClient的性能隐患

最近在進行開發過程中,基于都是接口開發,A站接口通路B接口接口來請求資料,而在這個過程中我們使用的是HttpClient這個架構,當然也是微軟自己的架構,性能目前沒有問題,但如果你直接使用官方的寫法,在高并發時候,會有很大的性能隐患,因為它官方使用的是using的方式,而對于請求量比較大時,這種方法對TCP建立也會過高,即使用完馬上釋放也會有很多time_out的請求,所有決定把某個用到httpclient的元件做成靜态化的!

明細

WebApi系列~HttpClient的性能隐患

統計

WebApi系列~HttpClient的性能隐患

調用,中規中矩的寫法

 優化它,做成TCP長連結,是以請求走一個通道

keep-alive關鍵字可以了解為一個長連結,逾時時間也可以在上面進行設定,例如10秒的逾時時間,當然并發量太大,這個10秒應該會抛棄很多請求

發送請求的代碼沒有了using,即這個httpclient不會被手動dispose,而是由系統控制它,當然你的程式重新開機時,這也就被回收了。

通過上面的改造,我們我系統性能得到了改善,TCP的連接配接數也降下來了

WebApi系列~HttpClient的性能隐患

是以對于長連結的多路複用技術,相對于請求過多的情況還是最省資源的!