HTTP 連接池


HTTP 連接是無狀態的,HTTP1.1 默認是長連接,HTTP1.0 也可以通過在請求頭中設置 Connection:keep-alive 來開啟長連接。

為什么要用Http連接池?
1、降低延遲
如果不采用連接池,每次連接發起Http請求的時候都會重新建立TCP連接(經歷3次握手),用完就會關閉連接(4次揮手),如果采用連接池則減少了這部分時間損耗
2、支持更大的並發
如果不采用連接池,每次連接都會打開一個端口,在大並發的情況下系統的端口資源很快就會被用完,導致無法建立新的連接

httpclient-4.5.12.jar 提供了 PoolingHttpClientConnectionManager 來實現 HTTP 連接的池化管理,其管理連接的基本單位是 HttpRoute(路由),每個路由上都會維護一定數量的 HTTP 連接。這里的 Route 的概念可以理解為客戶端機器到目標機器的一條線路,例如使用HttpClient的實現來分別請求 www.163.com 的資源和 www.sina.com 的資源就會產生兩個route。
缺省條件下對於每個Route,HttpClient僅維護2個連接,總數不超過20個連接,如果需要調整默認配置,可以使用 ConnPoolControl 方法進行調整連接限制。
org.apache.http.impl.conn.PoolingHttpClientConnectionManager

 

參考:
https://www.cnblogs.com/kingszelda/p/8988505.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM