java長連接和短連接


問題:最近上線的產品一個接口,頻繁出現ConnectionPoolTimeoutException錯誤,排查后原因是存在未正常斷開的連接,導致連接route耗盡

解決方案:

1、將長連接修改為短連接

2、請求結束后主動斷開連接
HTTP/1.1逐漸停止了對keep-alive連接的支持,用一種名為持久連接的改進型設計取代了它。持久連接的目的與keep-alive連接的目的相同,但是工作機制更優些。HTTP/1.1就吃連接在默認情況下是激活的,除非特別指明,否則HTTP/1.1假定所有的連接都是持久的,要在事務處理結束之后將連接關閉,HTTP/1.1應用程序必須向報文中顯示地添加一個Connection:close首部。引用自:“https://www.cnblogs.com/chengdabelief/p/6686603.html”
HttpPost post = new HttpPost();
try {  
           // post.setURI(URI.create(targetUrl));
            post.setHeader(HttpHeaders.CONNECTION, "close");
      //****其他業務邏輯代碼
    
} catch (HttpException e) {  
  // TODO Auto-generated catch block  
  e.printStackTrace();  
} catch (IOException e) {  
  // TODO Auto-generated catch block  
  e.printStackTrace();  
}finally{  
  post.releaseConnection();     
}  

注意:

post.setHeader(HttpHeaders.CONNECTION, "close"); 這一行確保連接釋放后能夠被關閉,從而解決等待連接池分配連接超時的問題


免責聲明!

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



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