日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpURLConnection的警告

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpURLConnection的警告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這段代碼對您來說還不錯嗎?

HttpURLConnection connection = null; try {connection = (HttpURLConnection) url.openConnection();try (InputStream in = url.getInputStream()) {return streamToString(in);} } finally {if (connection != null) connection.disconnect(); }

看起來不錯–它打開一個連接,從中讀取,關閉輸入流,釋放連接,僅此而已。 但是,在運行一些性能測試并試圖找出瓶頸問題時,我們發現disconnect()看起來并不那么好–當我們停止斷開連接時,傳出連接的數量是原來的兩倍。 這是javadoc:

表示在不久的將來不太可能向服務器發出其他請求。 調用disconnect()并不意味著可以將此HttpURLConnection實例重新用于其他請求。

在類itslef上:

如果持久連接當時處于空閑狀態,則調用disconnect()方法可能會關閉基礎套接字。

這仍然不清楚,但是給我們一個暗示,還有更多的東西。 讀取幾個計算器的和java.net答案(后1 , 2 , 3 , 4 ),并且還對Android文檔相同的類,它是從Oracle實現實際上不同的,事實證明, .disconnect()實際關閉(或在Android的情況下可能會關閉)基礎套接字。

然后,我們可以找到這部分文檔 (它在javadoc中進行了鏈接,但是在調用斷開連接時并沒有立即變得很重要),這為我們提供了全貌:

keep.alive屬性(默認值:true)指示套接字可以被后續請求重用。 通過打開與服務器的連接(支持保持活動狀態)來工作,然后不再需要打開套接字的開銷。 默認情況下,最多重復使用5個此類套接字(每個目標)。 您可以通過設置http.maxConnections屬性來增加此池的大小。 但是,將其增加到10、20和50之后,傳出請求的數量沒有明顯改善。

但是,當我們使用池化連接管理器從HttpURLConnection切換到apache http client時 ,每秒發出的連接數量增加了3倍。 而這并沒有對其進行微調。

負載測試,即用盡可能多的請求轟炸目標服務器,聽起來像一個小眾的用例。 但是實際上,如果您的應用程序在每個請求中調用了堆棧中的Web服務或外部服務,那么您將遇到相同的問題–您每秒可以向目標服務器發出更少的請求,因此,每秒響應您的用戶的請求更少。

這里的建議是:幾乎總是喜歡apache http客戶端 –它具有更好的API方式和更好的性能,而無需了解其在下面的功能。 但也要注意同樣的注意事項–檢查池大小和連接重用 。 如果使用HttpURLConnection ,請在閱讀連接響應后不要斷開連接,請考慮增加套接字池的大小,并注意相關問題 。

翻譯自: https://www.javacodegeeks.com/2014/09/caveats-of-httpurlconnection.html

總結

以上是生活随笔為你收集整理的HttpURLConnection的警告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。