久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

使用HTTP Client踩到的一個坑,你一定要避免
來源:程序新視界    時間:2022-04-27 07:55:09
前言

作為軟件開發者,我們知道一切看似正常的系統,不知埋藏著多少坑。今天跟大家分享一個實戰過程中遇到的HTTP Client使用不當導致的坑。

筆者通過問題的表象一路追蹤下去,最終找到導致問題的根源:HTTP Client。結論很簡單,先賣個關子,但分析的過程值得你借鑒。

問題現象

場景:幾乎每個系統都有異步調用三方服務的功能,所負責的系統基于阻塞隊列實現了一個消息隊列,來調用三方服務。為了確保冪等性,隊列是順序消費。這就導致一個問題,一旦其中一個消息被阻塞,后面的消息就無法消費。當隊列滿時,也無法向隊列中添加消息。

看似:極其偶發的場景下,消息隊列被阻塞十多分鐘。這是什么鬼?

下面就開始了問題的逐步排查。

問題排查

首先想到的是,是不是消息隊列實現的底層機制有問題。比如消息隊列是通過while(true)輪訓+sleep睡眠來實現生產者和消費者的持續存取數據。

既然消息被阻塞,是否是因為sleep(睡)過頭了?后來一想,即使CPU進行了分片處理,也不至于睡眠那么就不會被喚醒。同時也不太可能是線程被interrupted掉。因為,如被interrupted掉了,整個隊列就掛了,不會延遲后恢復正常。

在此處困惑了很久,看了消息隊列實現的源碼很久,沒有突破。于是,與朋友探討了一下,一句話提醒了我:可能不是睡眠的問題,而是生產者或消費者的問題。

于是仔細扒日志,發現還真是的:生產者向隊列中丟了一次數據,持續很長時間沒有再丟數據;消費者在生產者向隊列丟數據之后幾分鐘還有消費的日志。很明顯,生產者是被消費者阻塞了。

初步結論:消費者消費時間過長,導致隊列滿了,生產者向隊列添加數據時被阻塞。

經驗性猜測:消費者中有HTTP請求,HTTP請求可能長時間持有連接未釋放。

問題根源

當分析定位到是HTTP請求的原因,就很好解決了。首先分析了日志,發現的確有一個HTTP請求,請求前打印了請求參數,但始終沒看到返回結果的打印。扒日志終于看到,返回結果的日志是在15分鐘之后打印出來的,日志內容為對方服務異常。

再看看代碼,發現HTTP請求是基于HTTP Client實現的,而當初寫這段代碼的人并沒有設置超時時間。為了保持業務脫敏,找了一段類似的代碼:

public static String doPostWithJSON(String url, String json) throws Exception { CloseableHttpClient client = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type","application/json;charset=UTF-8"); StringEntity se = new StringEntity(json, Charset.forName("UTF-8")); se.setContentType("application/json"); httpPost.setEntity(se); CloseableHttpResponse response = client.execute(httpPost); HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); return result;}

像上述代碼一樣,設置了請求參數,但未指定HttpPost的超時時間。看似正常的代碼,隱藏著一個巨大的坑,導致的結果就是HTTP請求一直等待。

筆者所遇到的情況還好,對方設置的超時時間為15分鐘,還給返回了結果。如果對方未設置超時時間,可能就一直等待了,當業務量比較大時,會導致災難的發生!

HTTP Client的超時設置

找問題往往是最難,當找到問題時,解決起來就容易多了。HTTP Client的不同版本有不同的設置超時時間的方式,這也算是HTTP Client的又一大弊端吧,API版本變動太大。

4.3版本的配置:

httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,10000);httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,10000);

4.3以后版本的配置:

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();httpGet.setConfig(requestConfig);

其中,setConnectTimeout為連接超時時間,單位為毫秒。

setSocketTimeout為請求獲取數據的超時時間,單位毫秒。如果訪問一個接口,指定時間內無法返回數據,就直接放棄此次調用。

其他版本的使用,建議參考一下相關的API說明了。

小結

在實踐的過程中,我們經常會遇到一些莫名其妙的問題,而這些問題導致的原因可能是實踐經驗不足,也可能是對API的使用不夠熟練。而經驗來自哪里?來自像本文這樣一個個問題的排查、總結、積累而獲得。

比如,讀完本篇文章,你已經知道了:當使用HTTP Client時一定要設置超時時間。同時,你肯定也能舉一反三,凡是在HTTP調用時都需要考慮一下超時時間及對應的異常處理。

關鍵詞: 請求參數 異常處理 實踐經驗 舉一反三

上一篇:

下一篇:

X 關閉

X 關閉

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
国产欧美日韩视频一区二区| 国产精品久久久久久久久免费桃花| 国产精品久久国产精麻豆99网站| 久久久亚洲成人| 欧美国产综合视频| 一本色道久久加勒比精品| 性伦欧美刺激片在线观看| 欧美亚洲色图校园春色| 西西裸体人体做爰大胆久久久| 一本色道久久88综合亚洲精品ⅰ| 亚洲一本视频| 欧美精品三区| 欧美午夜影院| 亚洲韩国精品一区| 激情综合色丁香一区二区| 亚洲精品网址在线观看| 国产精品有限公司| 国产有码在线一区二区视频| 激情欧美一区二区三区| 最新69国产成人精品视频免费| 欧美成人午夜剧场免费观看| 亚洲肉体裸体xxxx137| 国产亚洲一区二区在线观看| 国产精品日韩在线| 欧美人成在线视频| 亚洲图片在线观看| 久久久精品日韩| 在线观看欧美黄色| 欧美精品成人一区二区在线观看| 中文国产成人精品| 国产精品视频免费观看www| 欧美大尺度在线观看| 9色精品在线| 国产嫩草一区二区三区在线观看| 日韩亚洲在线| 宅男精品导航| 影音先锋成人资源站| 国产精品嫩草影院av蜜臀| 久久成人精品无人区| 依依成人综合视频| 国产精品久久久久久久一区探花| 欧美大片在线看| 美日韩精品免费观看视频| 欧美激情在线狂野欧美精品| 国产日产高清欧美一区二区三区| 久久国产福利国产秒拍| 国产精品一区在线观看| 久久久视频精品| 一区二区日韩免费看| 亚洲成色www8888| 免费不卡在线观看| 一区二区三区欧美视频| 亚洲尤物在线视频观看| 一区二区三区**美女毛片| 亚洲一区免费看| 欧美日韩1区2区3区| 欧美一区二区三区在| 久久精品一本久久99精品| 国产精品美女久久| 欧美日韩精品在线视频| 亚洲欧美一区二区三区极速播放| 亚洲一区二区在线看| 国产精品免费区二区三区观看| 久久青青草原一区二区| 亚洲欧洲视频| 亚洲伦理网站| 亚洲国产成人91精品| 欧美一区=区| 亚洲一区二区在线免费观看视频| 午夜精品剧场| 亚洲精品美女免费| 亚洲第一精品久久忘忧草社区| 国产一区久久| 欧美性大战久久久久久久蜜臀| 亚洲片国产一区一级在线观看| 久久福利视频导航| 欧美一区二区三区在线视频| 午夜亚洲福利在线老司机| 欧美日韩亚洲一区二区三区在线观看| 欧美精品1区2区| 久久精品伊人| 久久精品国产成人| 国产日产欧产精品推荐色| 欧美综合激情网| 欧美日韩视频在线一区二区观看视频| 久久久久中文| 久久精品一区二区国产| 欧美成人日本| 国产亚洲欧美一区在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 国产精品亚洲欧美| 一本大道av伊人久久综合| 国产日韩欧美不卡在线| 国产精品国产成人国产三级| 久久久午夜精品| 欧美伦理91i| 欧美一区二区三区四区视频| 久久国产精品久久久久久久久久| 久久精品日韩欧美| 六月丁香综合| 国产一区日韩二区欧美三区| 夜夜嗨av一区二区三区四季av| 一区二区三区高清在线观看| 国产专区一区| 午夜精品久久久久久久久久久久| 玖玖国产精品视频| 欧美亚洲成人网| 先锋影音一区二区三区| 久久久一区二区| 亚洲男人的天堂在线观看| 亚洲视频一二区| 久久狠狠婷婷| 欧美丝袜一区二区| 国产精品久久久久久久久搜平片| 久久国产精品久久国产精品| 国产精品私拍pans大尺度在线| 亚洲国产视频一区二区| 久久久夜夜夜| 欧美噜噜久久久xxx| 亚洲经典视频在线观看| 鲁大师影院一区二区三区| 欧美大片在线看| 欧美激情视频一区二区三区在线播放| 亚洲天堂av在线免费观看| 亚洲人成艺术| 免费精品视频| 欧美电影在线观看| 国产精品成人一区| 亚洲一区欧美二区| 久久另类ts人妖一区二区| 久久久久久久久岛国免费| 欧美成人国产一区二区| 欧美影院成人| 久久久亚洲成人| 国产精品一区二区三区乱码| 国产精品热久久久久夜色精品三区| av不卡免费看| 国产午夜精品麻豆| 亚洲国产一区二区三区高清| 国产日韩欧美一区| 欧美视频在线一区二区三区| 中文精品一区二区三区| 亚洲电影免费观看高清完整版在线| 欧美日韩在线精品| 国产精品国产三级国产aⅴ浪潮| 欧美色图一区二区三区| 久久精品免费播放| 欧美看片网站| 狠狠色伊人亚洲综合成人| 国产亚洲午夜| 亚洲欧洲日产国产综合网| 欧美美女bbbb| 国产精品欧美日韩一区二区| 国产日韩欧美在线| 国产精品有限公司| 99视频热这里只有精品免费| 欧美日韩亚洲激情| 伊人婷婷欧美激情| 欧美日韩二区三区| 国产精品久久久久久久午夜| 红桃视频一区| 午夜精品在线| 一区二区三区日韩精品视频| 亚洲高清在线观看一区| 欧美午夜激情小视频| 欧美日韩国产成人| 国产精品久久久久一区二区三区共| 亚洲一区999| 亚洲午夜国产一区99re久久| 国产精品美女视频网站| 久热精品视频在线观看一区| 亚洲综合色丁香婷婷六月图片| 亚洲欧美一区二区精品久久久| 亚洲乱码国产乱码精品精98午夜| 欧美激情无毛| 母乳一区在线观看| 欧美高清在线视频| 欧美日韩一区成人| 欧美日韩国产限制| 久热精品视频| 一区二区三区成人精品| 欧美性事免费在线观看| 亚洲深夜福利视频| 久久综合伊人77777尤物| 国产欧美一区二区色老头| 午夜精彩视频在线观看不卡| 国产精品日韩在线播放| 亚洲欧美日韩中文在线制服| 农村妇女精品| 国产深夜精品福利| 亚洲无玛一区| 中文久久乱码一区二区| 午夜视频一区在线观看| 欧美精品123区| 亚洲二区视频在线| 亚洲视频高清| 久久精品国内一区二区三区| 亚洲综合色丁香婷婷六月图片| 欧美黑人在线播放| 亚洲精品一品区二品区三品区|