精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

震驚!線上4臺(tái)機(jī)器同時(shí)OOM,到底發(fā)生了什么?

運(yùn)維 系統(tǒng)運(yùn)維
昨天晚上突然短信收到 APM 大量告警。緊接著運(yùn)維打來電話告知線上部署的四臺(tái)機(jī)器全部 OOM (out of memory,內(nèi)存不足),服務(wù)全部不可用,趕緊查看問題!

 昨天晚上突然短信收到 APM 大量告警。緊接著運(yùn)維打來電話告知線上部署的四臺(tái)機(jī)器全部 OOM (out of memory,內(nèi)存不足),服務(wù)全部不可用,趕緊查看問題!

[[285094]] 

圖片來自 Pexels

問題排查

首先運(yùn)維先重啟了機(jī)器,保證線上服務(wù)可用,然后再仔細(xì)地看了下線上的日志,確實(shí)是因?yàn)?OOM 導(dǎo)致服務(wù)不可用:

 

第一時(shí)間想到 Dump 當(dāng)時(shí)的內(nèi)存狀態(tài),但由于為了讓線上盡快恢復(fù)服務(wù),運(yùn)維重啟了機(jī)器,導(dǎo)致無法 Dump 出事發(fā)時(shí)的內(nèi)存。所以我又看了下我們 APM 中對(duì) JVM 的監(jiān)控圖表。

畫外音:一種方式不行,嘗試另外的角度切入!再次強(qiáng)調(diào),監(jiān)控非常重要!完善的監(jiān)控能還原當(dāng)時(shí)的事發(fā)現(xiàn)場(chǎng),方便定位問題。

 

不看不知道,一看嚇一跳,從 16:00 開始應(yīng)用中創(chuàng)建的線程居然每時(shí)每刻都在上升,一直到 3W 左右,重啟后(藍(lán)色箭頭),線程也一直在不斷增長(zhǎng),正常情況下的線程數(shù)是多少呢,600!

問題找到了,應(yīng)該是在下午 16:00 左右發(fā)了一段有問題的代碼,導(dǎo)致線程一直在創(chuàng)建,且創(chuàng)建的線程一直未消亡!

查看發(fā)布記錄,發(fā)現(xiàn)發(fā)布記錄只有這么一段可疑的代碼 diff:在 HttpClient 初始化的時(shí)候額外加了一個(gè) evictExpiredConnections 配置。

 

問題定位了,應(yīng)該就是這個(gè)配置導(dǎo)致的!(線程上升的時(shí)間點(diǎn)和發(fā)布時(shí)間點(diǎn)完全吻合!),于是先把這個(gè)新加的配置給干掉上線,上線之后線程數(shù)果然恢復(fù)正常了。

那 evictExpiredConnections 做了什么導(dǎo)致線程數(shù)每時(shí)每刻在上升呢?這個(gè)配置又是為了解決什么問題而加上的呢?于是找到了相關(guān)同事來了解加這個(gè)配置的前因后果。

還原事發(fā)經(jīng)過

最近線上出現(xiàn)不少 NoHttpResponseException 的異常,那是什么導(dǎo)致了這個(gè)異常呢?在說這個(gè)問題之前我們得先了解一下 Http 的 keep-alive 機(jī)制。

先看下正常的一個(gè) TCP 連接的生命周期:

 

可以看到每個(gè) TCP 連接都要經(jīng)過三次握手建立連接后才能發(fā)送數(shù)據(jù),要經(jīng)過四次揮手才能斷開連接。

如果每個(gè) TCP 連接在 Server 返回 Response 后都立馬斷開,則發(fā)起多個(gè) Http 請(qǐng)求就要多次創(chuàng)建斷開 TCP,這在 Http 請(qǐng)求很多的情況下無疑是很耗性能的。

如果在 Server 返回 Response 不立即斷開 TCP 鏈接,而是復(fù)用這條鏈接進(jìn)行下一次的 Http 請(qǐng)求,則無形中省略了很多創(chuàng)建/斷開 TCP 的開銷,性能上無疑會(huì)有很大提升。

如下圖示,左圖是不復(fù)用 TCP 發(fā)起多個(gè) Http 請(qǐng)求的情況,右圖是復(fù)用 TCP 的情況。

 

可以看到發(fā)起三次 Http 請(qǐng)求,復(fù)用 TCP 的話可以省去兩次建立/斷開 TCP 的開銷。

理論上發(fā)起一個(gè)應(yīng)用只要啟一個(gè) TCP 連接即可,其他 Http 請(qǐng)求都可以復(fù)用這個(gè) TCP 連接,這樣 N 次 Http 請(qǐng)求可以省去 N-1 次創(chuàng)建 / 斷開 TCP 的開銷。這對(duì)性能的提升無疑是有巨大的幫助。

回過頭來看 keep-alive (又稱持久連接,連接復(fù)用)做的就是復(fù)用連接, 保證連接持久有效。

畫中音: Http 1.1 之后 keep-alive 才默認(rèn)支持并開啟,不過目前大部分網(wǎng)站都用了 HTTP 1.1 了,也就是說大部分都默認(rèn)支持鏈接復(fù)用了。

天下沒有免費(fèi)的午餐 ,雖然 keep-alive 省去了很多不必要的握手/揮手操作,但由于連接長(zhǎng)期保活,如果一直沒有 Http 請(qǐng)求的話,這條連接也就長(zhǎng)期閑著了,會(huì)占用系統(tǒng)資源,有時(shí)反而會(huì)比復(fù)用連接帶來更大的性能消耗。

所以我們一般會(huì)為 keep-alive 設(shè)置一個(gè) timeout,這樣如果連接在設(shè)置的 timeout 時(shí)間內(nèi)一直處于空閑狀態(tài)(未發(fā)生任何數(shù)據(jù)傳輸),經(jīng)過 timeout 時(shí)間后,連接就會(huì)釋放,就能節(jié)省系統(tǒng)開銷。

看起來給 keep-alive 加 timeout 是完美了,但是又引入了新的問題(一波已平,一波又起)。

考慮如下情況:如果服務(wù)端關(guān)閉連接,發(fā)送 FIN 包(注:在設(shè)置的 timeout 時(shí)間內(nèi)服務(wù)端如果一直未收到客戶端的請(qǐng)求,服務(wù)端會(huì)主動(dòng)發(fā)起帶 FIN 標(biāo)志的請(qǐng)求以斷開連接釋放資源)。

在這個(gè) FIN 包發(fā)送但是還未到達(dá)客戶端期間,客戶端如果繼續(xù)復(fù)用這個(gè) TCP 連接發(fā)送 Http 請(qǐng)求報(bào)文的話,服務(wù)端會(huì)因?yàn)樵谒拇螕]手期間不接收?qǐng)?bào)文而發(fā)送 RST 報(bào)文給客戶端。

客戶端收到 RST 報(bào)文就會(huì)提示異常(即NoHttpResponseException)。

我們?cè)儆昧鞒虉D仔細(xì)梳理一下上述這種產(chǎn)生 NoHttpResponseException 的原因,這樣能看得更明白一些:

 

費(fèi)了這么大的功夫,我們終于知道了產(chǎn)生 NoHttpResponseException 的原因,那么該怎么解決呢?

有如下兩種策略:

  • 重試,收到異常后,重試一兩次,由于重試后客戶端會(huì)用有效的連接去請(qǐng)求,所以可以避免這種情況,不過一次要注意重試次數(shù),避免引起雪崩!
  • 設(shè)置一個(gè)定時(shí)線程,定時(shí)清理上述的閑置連接,可以將這個(gè)定時(shí)時(shí)間設(shè)置為 keep alive timeout 時(shí)間的一半以保證超時(shí)前回收。

evictExpiredConnections 就是用的上述第二種策略,來看下官方用法使用說明:

Makes this instance of HttpClient proactively evict idle connections from the connection pool using a background thread.

調(diào)用這個(gè)方法只會(huì)產(chǎn)生一個(gè)定時(shí)線程,那為啥應(yīng)用中線程會(huì)一直增加呢?因?yàn)槲覀儗?duì)每一個(gè)請(qǐng)求都創(chuàng)建了一個(gè) HttpClient!

這樣由于每一個(gè) HttpClient 實(shí)例都會(huì)調(diào)用 evictExpiredConnections,導(dǎo)致有多少請(qǐng)求都會(huì)創(chuàng)建多少個(gè)定時(shí)線程!

還有一個(gè)問題,為啥線上四臺(tái)機(jī)器幾乎同一時(shí)間點(diǎn)全掛呢?因?yàn)橛捎谪?fù)載均衡,這四臺(tái)機(jī)器的權(quán)重是一樣的,硬件配置也一樣,收到的請(qǐng)求其實(shí)也可以認(rèn)為是差不多的。

這樣這四臺(tái)機(jī)器由于創(chuàng)建 HttpClient 而生成的后臺(tái)線程也在同一時(shí)間達(dá)到最高點(diǎn),然后同時(shí) OOM。

解決問題

所以針對(duì)以上提到的問題,我們首先把 HttpClient 改成了單例,這樣保證服務(wù)啟動(dòng)后只會(huì)有一個(gè)定時(shí)清理線程。

另外我們也讓運(yùn)維針對(duì)應(yīng)用的線程數(shù)做了監(jiān)控,如果超過某個(gè)閾值直接告警,這樣能在應(yīng)用 OOM 前及時(shí)發(fā)現(xiàn)處理。

畫外音:再次強(qiáng)調(diào),監(jiān)控相當(dāng)重要,能把問題扼殺在搖籃里!

總結(jié)

本文通過線上四臺(tái)機(jī)器同時(shí) OOM 的現(xiàn)象,來詳細(xì)剖析定位了產(chǎn)生問題的原因。

可以看到我們?cè)趹?yīng)用某個(gè)庫時(shí)首先要對(duì)這個(gè)庫要有充分的了解(上述 HttpClient 的創(chuàng)建不用單例顯然是個(gè)問題),其次必要的網(wǎng)絡(luò)知識(shí)還是需要的。

所以要成為一個(gè)合格的程序員,不光對(duì)語言本身有所了解,還要對(duì)網(wǎng)絡(luò),數(shù)據(jù)庫等也要有所涉獵,這些對(duì)排查問題以及性能調(diào)優(yōu)等會(huì)有非常大的幫助。

再次,完善的監(jiān)控非常重要,通過觸發(fā)某個(gè)閾值提前告警,可以將問題扼殺在搖籃里!

 

責(zé)任編輯:武曉燕 來源: 碼海
相關(guān)推薦

2020-08-17 12:47:07

Mozilla裁員瀏覽器

2019-11-12 14:41:41

Redis程序員Linux

2020-04-21 08:24:09

IO機(jī)器代碼

2010-02-07 09:00:29

AndroidLinux Kerne

2023-03-10 08:24:27

OOMdump線程

2020-09-01 11:40:01

HTTPJavaTCP

2022-05-26 23:36:36

SQLMySQL數(shù)據(jù)

2020-10-09 08:59:55

輸入網(wǎng)址解密

2021-02-25 10:02:32

開機(jī)鍵Linux內(nèi)存

2022-09-15 07:54:59

awaitPromise

2017-04-11 13:54:49

HTTPURLHTML

2025-04-27 08:11:26

2020-07-28 23:22:35

制造業(yè)工業(yè)物聯(lián)網(wǎng)IIOT

2019-08-26 09:35:25

命令ping抓包

2021-01-18 08:23:23

內(nèi)存時(shí)底層CPU

2021-04-11 10:40:16

Git軟件開發(fā)

2023-08-29 16:26:20

Linux命令行

2015-07-03 09:27:43

網(wǎng)絡(luò)閏秒

2019-09-16 17:16:29

Hadoop數(shù)據(jù)湖數(shù)據(jù)結(jié)構(gòu)

2022-06-03 08:12:52

InnoDB插入MySQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久婷婷亚洲| 狠狠综合久久av一区二区| 国产乱论精品| 一本久道久久综合中文字幕 | 日韩中文第一页| 一区二区三区四区毛片| 暖暖在线中文免费日本| 国产丝袜美腿一区二区三区| 91麻豆国产精品| 精品91久久久| 日韩精品永久网址| 精品国产亚洲在线| 欧美日韩亚洲一二三| 乱人伦中文视频在线| 丁香婷婷综合网| 欧美性视频网站| 亚洲人成网站在线观看播放| 午夜写真片福利电影网| 国产精品巨作av| 色综合天天综合狠狠| 精品蜜桃传媒| 国产精品99久久久久久成人| 日本少妇精品亚洲第一区| 午夜视频在线观看一区二区三区| 色乱码一区二区三在线看| 国产不卡精品视频| 亚洲国产精彩视频| 在线视频成人| www激情久久| 91在线精品观看| 丰满少妇一区二区三区| 影视一区二区三区| 国产精品午夜在线观看| 国产精品国产三级国产专区53| 在线观看日本网站| 欧美国产高清| 亚洲欧美制服中文字幕| 在线观看av免费观看| 小视频免费在线观看| **网站欧美大片在线观看| 国内一区二区三区在线视频| 97精品久久人人爽人人爽| 亚洲高清激情| 久久中文字幕国产| 国产中年熟女高潮大集合| 网友自拍视频在线| 国产成人精品亚洲日本在线桃色| 国产激情久久久| 精品无码人妻一区| 欧美成年网站| 欧美喷水一区二区| 白嫩少妇丰满一区二区| 国产经典三级在线| 美国一区二区三区在线播放 | 国产裸体写真av一区二区| 日本少妇在线观看| 一区二区三区国产精华| 国产亚洲精品美女久久久| 影音先锋资源av| 精品中文视频| 欧美日韩免费观看一区二区三区| 国产午夜福利视频在线观看| 国产探花视频在线观看| 亚洲色图清纯唯美| 国产在线观看91精品一区| 特级西西444www大精品视频免费看| 国产精品久久久久蜜臀| 亚洲色图美腿丝袜| 国产精品揄拍100视频| 国产精品丝袜在线播放| 日韩欧美国产午夜精品| av在线免费看片| 日韩城人网站| 欧美日韩国产小视频| 五月婷婷狠狠操| 午夜精品久久久久久久久久蜜桃| 欧美日韩久久久久| 久久综合九色综合88i| 欧美寡妇性猛交xxx免费| 亚洲精品欧美专区| 国产精品二区三区四区| 国产免费久久久| 亚洲精品久久| 欧美美女操人视频| 99久久婷婷国产综合| 四季av一区二区凹凸精品| 日韩在线观看免费全集电视剧网站 | 91高清国产视频| 国产精品蜜月aⅴ在线| 欧美色大人视频| 久久6免费视频| 美女精品久久| 欧美精品一区二区三区一线天视频| www男人天堂| 亚洲丝袜啪啪| 色偷偷888欧美精品久久久| 91视频免费在观看| 手机亚洲手机国产手机日韩| 日韩中文字幕精品| 国产极品在线播放| 亚洲永久免费观看| 国产精品免费无遮挡| 九一九一国产精品| 亚洲综合色av| 手机看片一区二区| 久久精品在这里| 一区二区视频国产| 天堂av资源在线观看| 午夜精品久久久久影视| 久草精品在线播放| 亚洲国产伊人| 日韩精品极品在线观看| 国内毛片毛片毛片毛片毛片| 欧美日韩成人| 日本亚洲欧洲色| 国产乱淫片视频| 国产成人综合亚洲网站| 久久综合色一本| 黄网址在线观看| 黑人巨大精品欧美一区免费视频| jizz大全欧美jizzcom| gogo在线高清视频| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲精品乱码久久久久久蜜桃91| a级影片在线| 日韩欧美在线国产| 欧美国产视频一区| 欧美亚洲韩国| 精品成人在线观看| 五月天免费网站| 日本大胆欧美| 97在线观看视频| 国产露脸91国语对白| 久久亚区不卡日本| 国产精品www在线观看| 欧美黑人粗大| 亚洲第一网中文字幕| av黄色免费在线观看| 久久精品主播| 精品国产aⅴ麻豆| 新版中文在线官网| 欧美女孩性生活视频| 美国黄色一级毛片| 精品91在线| 亚洲一区二区三区在线免费观看| 国产一区精品| 欧美丝袜一区二区三区| 久久精品无码专区| 成人看的视频| 欧美一级视频一区二区| www.麻豆av| 国产人成一区二区三区影院| 国产91在线免费| 加勒比色综合久久久久久久久| 欧美日韩极品在线观看一区| 中文字幕一区二区久久人妻网站 | 18av在线播放| 欧美日韩一区成人| 少妇特黄一区二区三区| 亚洲第一区色| 国产精品永久入口久久久| 激情在线小视频| 欧美精品乱码久久久久久按摩| 91激情视频在线观看| 水野朝阳av一区二区三区| 精品乱码一区二区三区| 成人免费图片免费观看| 日韩av在线导航| 日本一二三区不卡| 福利一区在线观看| 久久久久久久9| 99久久婷婷国产综合精品青牛牛| 欧美精品日韩www.p站| 99久久亚洲精品日本无码| 一区二区中文视频| 一个色综合久久| 亚洲午夜精品一区二区国产 | 亚洲欧美日韩精品久久亚洲区| 日本中文字幕在线免费观看| 99精品视频在线观看免费| 日韩欧美的一区| 久久综合狠狠综合久久综青草 | 在线天堂资源| 日韩av在线天堂网| 国产精品久久久久久人| 国产亚洲va综合人人澡精品| 91视频免费版污| 精品一区二区三区在线| 国产精品成人久久久久| 成人在线观看一区| 日韩欧美高清一区| 永久av免费网站| 久久99热这里只有精品| aaa免费在线观看| 白白在线精品| 情事1991在线| 免费黄网在线观看| 精品三级在线看| 欧产日产国产69| 国产精品久久久久影院老司| 亚洲高清av一区二区三区| 欧美视频不卡| 日本一区二区三区精品视频| 亚洲伦理一区二区| 国内久久久精品| 极品国产91在线网站| 国产午夜精品福利| 中文字幕亚洲影院| 亚洲电影在线| 伊人久久大香线蕉精品| 超碰成人97| 国产精品久久久久久av福利| 色婷婷视频在线观看| 亚洲欧美日韩国产中文| 人人妻人人爽人人澡人人精品| 亚洲色图另类专区| 久久午夜夜伦鲁鲁片| 美腿丝袜亚洲一区| 日韩欧美不卡在线| 日本欧美视频| 99爱精品视频| 日本高清不卡一区二区三区视频 | zjzjzjzjzj亚洲女人| 亚洲美女视频在线免费观看| 夜夜爽www精品| 伊人久久大香线蕉无限次| 亚洲综合社区网| av高清一区| 久久久中精品2020中文| 在线观看h片| 日韩国产欧美精品一区二区三区| 国产精品久久777777换脸| 欧美午夜激情视频| 麻豆chinese极品少妇| 亚洲国产成人在线| 精品国产av色一区二区深夜久久 | 神马久久一区二区三区| 粉嫩av免费一区二区三区| 精品123区| 韩国一区二区电影| av超碰免费在线| 色婷婷av一区二区三区在线观看| 手机福利小视频在线播放| 亚洲国产精品一区二区久久恐怖片 | 香蕉成人伊视频在线观看| 美女福利视频网| 久久精品一区二区三区av| 日本五十肥熟交尾| 国产一区二区免费视频| 一区二区三区视频网| 免费在线日韩av| 免费无码毛片一区二三区| 亚洲乱码免费伦视频| 亚洲一区二区三区涩| av亚洲免费| 欧美一区1区三区3区公司| 欧美成人一区在线观看| 国产成人亚洲欧美| 永久免费精品视频| 99re在线| 中文字幕一区二区三区四区久久 | 成人av三级| 欧美另类在线观看| www.久久ai| 日韩中文字幕在线| 国产视频在线播放| 精品国产一区av| 顶级网黄在线播放| 久久高清视频免费| 午夜伦理在线视频| 欧美高清不卡在线| av丝袜在线| 精品国产免费一区二区三区香蕉| 亚洲天堂自拍偷拍| 欧美视频你懂的| 中文av免费观看| 欧美日韩一区二区在线观看视频| 在线免费观看一级片| 欧美日韩高清影院| 国产特级黄色片| 精品国产乱码久久久久久影片| 黄色一级大片在线免费看国产| 亚洲激情在线观看视频免费| 同心难改在线观看| 亚洲新声在线观看| 色的视频在线免费看| 欧美精品在线视频观看| 福利小视频在线| 欧美一级高清免费| 欧洲成人一区| 成人乱色短篇合集| 欧美日韩黄色| 久久亚洲一区二区| 波多野结衣的一区二区三区| 伊人久久大香线蕉精品| 欧美午夜在线视频| 日本免费黄视频| 另类小说欧美激情| 国产精九九网站漫画| 久久伊人蜜桃av一区二区| 99精品全国免费观看| 亚洲视频一二三区| 粉嫩aⅴ一区二区三区| 欧美自拍偷拍一区| 国产99视频在线| 日韩精品中文字幕久久臀| 98在线视频| 欧美激情亚洲综合一区| 视频在线日韩| 91福利入口| 嫩草一区二区三区| 经典三级在线视频| 国产色综合网| 中文字幕免费高清在线| 成人sese在线| 日本免费www| 亚洲午夜久久久久久久久久久| 亚洲国产av一区二区三区| 欧美一级理论片| 95在线视频| 久久久在线免费观看| 综合久久伊人| 欧美日韩一区二区视频在线观看 | 老司机激情视频| 日韩成人精品在线观看| 精品国产免费久久久久久婷婷| 久久久久久久久久久久久夜| 欧美精品一区二区成人| 色婷婷av一区二区三区软件| 亚洲成人精品女人久久久| 国产一区二区三区在线观看网站| 免费网站在线观看人| 国产精品亚洲网站| 亚洲精品播放| 日韩亚洲欧美视频| 久久99精品国产麻豆婷婷洗澡| 五月婷婷综合在线观看| 亚洲乱码国产乱码精品精可以看| 无码人妻丰满熟妇精品 | 亚洲精品性视频| 久久久亚洲高清| 日产精品久久久久| 欧美一区二区免费视频| 色影视在线观看| 国产精品久久久久久久一区探花 | 国产精品激情偷乱一区二区∴| 久热这里只有精品6| 精品少妇一区二区三区免费观看 | 精品国产乱码久久久久久老虎| avtt亚洲| 国产成人精品免高潮费视频| 欧美成a人免费观看久久| 中文精品无码中文字幕无码专区| 黄色精品一二区| 欧美成人短视频| 在线观看日韩毛片| 久草在线网址| 欧亚精品中文字幕| 色婷婷久久久| 国产一区二区三区精彩视频 | 91精品国产沙发| 九色丨蝌蚪丨成人| 欧美精品自拍视频| 成人av综合在线| 五月天综合在线| 亚洲国产精彩中文乱码av在线播放 | 亚洲欧美一区二区三区在线| 国产三线在线| 99国内精品久久久久久久软件| 亚洲激情久久| 欧美一级视频在线| 国产精品卡一卡二| 性高潮视频在线观看| 亚洲成人精品久久| 678在线观看视频| 九色综合日本| 日韩精品一级中文字幕精品视频免费观看 | 成人免费视频在线观看超级碰| 北条麻妃国产九九九精品小说| 亚洲不卡视频在线| 国产精品二三区| 国产网站无遮挡| 精品久久久久中文字幕小说| 一级性生活视频| 国内成人自拍视频| 少妇一级黄色片| 91精品国产综合久久香蕉的特点 | 最新中文字幕一区| 亚洲一级一级97网| 黑人一区二区三区| 青春草国产视频| 国产女同互慰高潮91漫画| 国产91视频在线| 国产成人精品久久二区二区91| 一本一道久久综合狠狠老 | 国产欧美一区二区精品久导航 | 成人18视频在线观看| 青草网在线观看| 国产精品美女久久久久久久网站| 韩国中文字幕hd久久精品|