青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一場虛驚——記大量心跳超時事件的排查

   項目終于上線了,伴隨著人數(shù)的逐步上升,最近查看日志,發(fā)現(xiàn)了大量連接超時的日志。項目中使用的是TCP長連接,為了保證網(wǎng)絡(luò)資源及時有效的釋放,程序中是1分鐘一次心跳,3分鐘無心跳即認(rèn)為超時。此為本文的背景
   相對于TCP連接建立時的三次握手,我想很多人對斷開連接的四次招呼就不是那么熟了,這里先談一下TCP的斷開,下面給出TCP斷開連接的過程圖:

   (peakflys注:TIME_WAIT狀態(tài)到CLOSED狀態(tài)的轉(zhuǎn)變視SO_LINGER選項的設(shè)置)
   從上圖可以看到,在服務(wù)器不主動關(guān)閉客戶端TCP連接的情況下,需要客戶端發(fā)送一個FIN分節(jié),然后服務(wù)器端OS TCP棧對這個數(shù)據(jù)包回復(fù)ACK后,服務(wù)器處理程序從TCP棧內(nèi)取出此連接斷開的消息,一般服務(wù)器程序的處理是:做完收尾清理工作后馬上調(diào)用close或者shutdown操作來關(guān)閉相應(yīng)的socket。這樣雙方都調(diào)用了關(guān)閉套接口的操作,經(jīng)過后面的一次確認(rèn)后才正常的關(guān)閉全雙工工作的TCP連接。但是如果客戶端出現(xiàn)了異常,導(dǎo)致FIN包發(fā)不到服務(wù)器端,那服務(wù)器端就只能一直保持這種“死連接”存在。目前解決這種問題的方法有兩個:一、開啟TIME_OUT選項,默認(rèn)情況下TCP棧兩小時后保活一次(如果要改變這個值,需要修改TCP的全局配置選項,對所有在此機(jī)器上跑的TCP程序都生效!),保活失敗后則關(guān)閉連接、回收資源,但這種保活機(jī)制有很多明顯或隱藏的問題,不建議使用);二、在應(yīng)用層面上定義保活機(jī)制,即在應(yīng)用層固定時間雙方保持?jǐn)?shù)據(jù)的交換即可,超出這個固定時間就認(rèn)為連接已不存在,執(zhí)行回收關(guān)閉的操作。
   之前我對TCP超時的理解就是Client端環(huán)境(或者中間路由)發(fā)生了異常 導(dǎo)致TCP不優(yōu)雅的斷開,這種異常存在于兩種情況:
   ①、客戶端OS崩潰(peakflys注:程序崩潰時,OS會代進(jìn)程發(fā)送FIN,所以這種情況的出現(xiàn)時在OS負(fù)責(zé)TCP處理的內(nèi)核機(jī)制失效時,這種失效可以是軟件層面的,如OS自身bug,或驅(qū)動層面的故障亦或是直接硬件損壞導(dǎo)致的)
   ②、雙方網(wǎng)絡(luò)中斷(peakflys注:這種中斷可能是中間網(wǎng)絡(luò)服務(wù)商的路由出現(xiàn)故障,或者客戶端機(jī)器的網(wǎng)線拔掉了,斷開了同最后一跳的路由器直接的連接,這種情況下就回觸發(fā)TCP的重傳機(jī)制,linux下是基于Berkaly的實現(xiàn)方法,默認(rèn)重傳15分次,持續(xù)時間半個小時左右)
   上述情況最終表現(xiàn)出來的結(jié)果為“主機(jī)不可達(dá)”或“重傳超時”的錯誤(peakflys注:如果第一種情況被最后一跳的路由器探測到,更新完路由表后就會反饋"主機(jī)不可達(dá)"的錯誤,探測不到或者第二種情況的重傳機(jī)制規(guī)定次數(shù)還是失敗的話就會反饋“重傳超時”的錯誤),在這兩種錯誤后,TCP棧就無能為力了。這時服務(wù)器端就出現(xiàn)了不優(yōu)雅的“死鏈接”。
   其實這兩種錯誤很容易理解,這就像兩個打電話的人約定如果要掛電話必須要讓對方知道,第二種情況對應(yīng)的場景是:一方突然被綁架,嘴上被綁上膠帶,然后使勁在心里喊我要掛電話了,我要掛電話了,但是對方聽不到,只能一直傻傻的等著。第一種情況對應(yīng)的場景是:一方直接被爆頭了,連遺言都沒來得及說就掛了,對方?jīng)]聽到他說掛電話,所以也只能傻傻的等到花兒也落了……
   言歸正傳,重新回到本次事件的描述上。看到大量的連接超時的日志(一天有四百多條記錄,當(dāng)時用戶量才3000人左右),首先基本排除網(wǎng)絡(luò)問題,因為通過對超時的連接IP分析,發(fā)現(xiàn)并沒有明顯的區(qū)域性,美國很多州的IP都有。那么最有可能的就是客戶端問題了,因為客戶端如果出現(xiàn)死循環(huán)或者進(jìn)程死鎖之類的問題時,因為進(jìn)程未崩潰,OS的TCP棧不會管你的,這時候客戶端也無力處理服務(wù)器發(fā)送過來的保活信息,導(dǎo)致服務(wù)器端程序認(rèn)為此鏈接已不存在。但是客戶端的同事說應(yīng)該不會出現(xiàn)這么多客戶端異常的情況吧,因為測試了很久,最近也沒放出特別的代碼,內(nèi)部QA人員也從沒有反饋有這種情況。
   沒辦法,繼續(xù)搜集日志,找找規(guī)律。當(dāng)時的思維就停留在這里了,非優(yōu)雅連接產(chǎn)生除了客戶端問題,還可能有什么情況? 不同地方這么多用戶的OS一天內(nèi)都崩潰?概率應(yīng)該很小啊,而且前后連續(xù)的幾天都是這樣的情況,從概率上講應(yīng)該是0了吧? 難道是不同地方的這么多用戶網(wǎng)絡(luò)一天內(nèi)都出現(xiàn)問題?倒是可能出現(xiàn),但是美國那邊的產(chǎn)品經(jīng)理和運(yùn)維人員都說沒有聽過這種情況……
   直到第二天和QA的經(jīng)理在聊起時他說了一句話:如果對方電腦休眠會出現(xiàn)這種情況嗎?我才柯南一般的靈光一閃,電腦休眠或者待機(jī)時應(yīng)該會出現(xiàn)這種情況吧。馬上去微軟官網(wǎng)幫助信息里查找關(guān)于待機(jī)、休眠的描述:
“休眠”將保存一份桌面及所有打開文件和文檔的映像,然后關(guān)閉計算機(jī)電源。打開電源時,文件和文檔就會按原來離開時的樣子在桌面上打開。“待機(jī)”功能則切斷所用硬件組件的電源,從而減少計算機(jī)的電源消耗。“待機(jī)”可切斷外圍設(shè)備、顯示器甚至硬盤驅(qū)動器的電源,但會保留計算機(jī)內(nèi)存的電源,以不至于丟失工作數(shù)據(jù)。
   從上面可以看到休眠直接關(guān)閉了計算機(jī)的電源,就算是待機(jī)也是關(guān)閉了外圍設(shè)備,因為網(wǎng)絡(luò)功能的處理肯定都是最終通過網(wǎng)卡來實現(xiàn)的,如果它關(guān)閉了,自然一切的網(wǎng)絡(luò)功能都失效了,而且OS還無恥的自己直接“睡”了,導(dǎo)致在服務(wù)器程序不知情的情況下,客戶端程序直接被“雪藏”了……
   在自己電腦上模擬了一下,日志表現(xiàn)出來的狀況也證實了應(yīng)該是個答案。至于為什么這種情況每天有上百個,因為外網(wǎng)環(huán)境復(fù)雜,使用者的習(xí)慣更難以捉摸,但持續(xù)觀察了很多天,都沒有人反饋客戶端有什么異常,所以基本可以肯定是因windows電源管理策略的待機(jī)和休眠導(dǎo)致的。
   其實這種情況可以歸為第一種情況:客戶端OS“崩潰”,認(rèn)真想一下應(yīng)該可以想到休眠這種情況的,但是當(dāng)時思維愣是沒往那方面想,一直認(rèn)為可能是客戶端程序出了問題,導(dǎo)致浪費(fèi)了將近一天的時間,虛驚一場。很多事情都是這樣,結(jié)果出來后再去倒推感覺每個過程都是順理成章的,但是正推時如果有一層窗戶紙沒捅開,就很可能跑到迷宮的另一個方向了……
                                                                           --peakflys 16:42:04 Monday, May 27, 2013

posted on 2013-05-27 16:56 peakflys 閱讀(5875) 評論(2)  編輯 收藏 引用 所屬分類: 服務(wù)器操作系統(tǒng)雜談

評論

# re: 一場虛驚——記大量心跳超時事件的排查 2013-05-28 09:48 zuhd

學(xué)習(xí)了,客戶端的超時鏈接,我一般無視啊,我原來基本理解就是玩家網(wǎng)絡(luò)不好,沒想到休眠也會這樣  回復(fù)  更多評論   

# re: 一場虛驚——記大量心跳超時事件的排查 2013-05-28 10:27 peakflys

@zuhd
如果使用成熟的網(wǎng)絡(luò)庫大可不必特別關(guān)注連接超時的問題,但是如果是自己按實際需要重新寫的網(wǎng)絡(luò)層,那么網(wǎng)絡(luò)層的容錯性和健壯性就需要通過很多指標(biāo)來考核,前期連接超時如果很多的話,就需要排查一下雙方網(wǎng)絡(luò)層代碼是否有異常。  回復(fù)  更多評論   

<2014年3月>
2324252627281
2345678
9101112131415
16171819202122
23242526272829
303112345

導(dǎo)航

統(tǒng)計

公告

人不淡定的時候,就愛表現(xiàn)出來,敲代碼如此,偶爾的靈感亦如此……

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美韩国高清| 亚洲自拍都市欧美小说| 久久青青草原一区二区| 国产一区欧美| 美女精品自拍一二三四| 麻豆91精品| 一区二区三区福利| 亚洲一区日本| 亚洲福利免费| 一本久久综合| 国产一区视频在线看| 欧美h视频在线| 欧美揉bbbbb揉bbbbb| 午夜在线精品偷拍| 毛片基地黄久久久久久天堂| 亚洲欧洲三级电影| 亚洲一区一卡| 亚洲激情网站| 亚洲一区二区少妇| 亚洲国产欧美一区二区三区久久| 亚洲高清免费视频| 国产精品久久久久影院亚瑟 | 国产欧美日韩在线| 欧美成年人在线观看| 欧美日韩中文字幕在线视频| 久久精品久久综合| 欧美日韩国产欧美日美国产精品| 欧美亚洲午夜视频在线观看| 欧美大片国产精品| 久久久久国产成人精品亚洲午夜| 欧美精品 日韩| 美女视频黄免费的久久| 国产精品久久久久久影院8一贰佰| 麻豆精品一区二区av白丝在线| 欧美日韩一区三区| 欧美国产综合视频| 国产一级精品aaaaa看| 99re6这里只有精品| 亚洲国产毛片完整版| 亚洲欧美日韩天堂| 亚洲香蕉视频| 欧美黄色一区二区| 免费在线观看精品| 国产一区二区三区视频在线观看| 日韩亚洲成人av在线| 亚洲激情婷婷| 麻豆av一区二区三区久久| 欧美一区二区三区四区高清 | 欧美成人午夜| 农村妇女精品| 狠狠色狠狠色综合系列| 亚洲免费视频网站| 性欧美办公室18xxxxhd| 欧美日精品一区视频| 亚洲精品乱码视频| 91久久黄色| 欧美大片免费观看在线观看网站推荐| 久久全球大尺度高清视频| 国产日产亚洲精品系列| 亚洲一品av免费观看| 国产精品你懂的在线欣赏| 在线亚洲一区| 欧美日韩国产高清| 亚洲人体偷拍| 亚洲自拍啪啪| 亚洲网在线观看| 国产精品视频| 亚洲国内自拍| 日韩午夜av| 欧美天堂在线观看| 亚洲少妇中出一区| 翔田千里一区二区| 国内精品美女在线观看| 久久久精品性| 亚洲国产综合91精品麻豆| 99天天综合性| 国产精品一区免费观看| 欧美在线免费观看| 欧美高清视频一二三区| 一区二区三区久久精品| 国产精品成人免费| 欧美在线日韩| 亚洲国产精品女人久久久| 一区二区日韩伦理片| 国产精品免费看久久久香蕉| 欧美亚洲一区二区三区| 欧美成人午夜激情视频| 一区二区国产精品| 国产欧美日韩一区二区三区在线| 久久久久久久久久久久久久一区| 欧美国产高潮xxxx1819| 亚洲一区二区3| 激情久久久久久久| 欧美理论片在线观看| 亚洲欧美日韩直播| 亚洲国产日韩在线| 欧美一区二区三区日韩视频| 在线观看亚洲a| 国产精品成人在线| 欧美 日韩 国产 一区| 在线视频日韩| 欧美国产视频日韩| 久久www免费人成看片高清| 亚洲国产精品123| 国产精品一区二区久久国产| 久久永久免费| 亚洲男人的天堂在线| 亚洲黄色一区二区三区| 久久gogo国模啪啪人体图| 9色精品在线| 亚洲福利av| 国产一区在线看| 国产精品久久久久一区二区三区共| 久久国产免费看| 亚洲一区二区三区在线看| 亚洲国产经典视频| 美女爽到呻吟久久久久| 性伦欧美刺激片在线观看| 一本色道久久88精品综合| 在线国产日韩| 国内精品伊人久久久久av一坑| 欧美视频免费| 欧美日韩久久不卡| 欧美v亚洲v综合ⅴ国产v| 久久国产精品第一页| 亚洲欧美日韩国产一区二区三区 | 久久久蜜臀国产一区二区| 亚洲一级在线| 亚洲一区二区三区四区五区午夜| 亚洲精品欧美激情| 亚洲人成亚洲人成在线观看图片| 亚洲人成网站精品片在线观看| 日韩午夜在线播放| 亚洲人体一区| 亚洲精品久久7777| 亚洲国产免费| 亚洲精品一区久久久久久| 亚洲电影网站| 亚洲欧洲精品一区二区三区不卡| 亚洲电影第三页| 亚洲国产欧美日韩| 亚洲毛片一区| 亚洲视频免费观看| 亚洲欧美日韩中文在线制服| 亚洲一区二区三区三| 亚洲一区久久久| 欧美在线网站| 久久综合给合久久狠狠色| 久久天天综合| 亚洲国产成人在线视频| 亚洲国产一区二区三区a毛片| 亚洲第一中文字幕在线观看| 亚洲国产精品一区二区久| 亚洲激情成人网| 一区二区高清在线| 亚洲欧美日韩国产中文| 久久黄色影院| 欧美激情一区二区三区不卡| 欧美国产日韩一区二区| 欧美午夜无遮挡| 国产亚洲一区在线播放| 在线观看三级视频欧美| 亚洲乱码国产乱码精品精天堂 | 亚洲激情影院| 亚洲一区二区在线播放| 久久不射网站| 欧美国产一区二区| 国产精品久久99| 黄色一区二区在线| 亚洲精品一区二区网址| 亚洲小视频在线观看| 久久精品国产成人| 亚洲激情视频网站| 午夜精品美女久久久久av福利| 久久亚洲综合色| 国产精品区一区二区三区| 狠狠久久五月精品中文字幕| 亚洲美女在线一区| 久久激情婷婷| 亚洲毛片av| 玖玖国产精品视频| 国产欧美日韩亚州综合| 最新日韩av| 久久在线播放| 中日韩视频在线观看| 美日韩丰满少妇在线观看| 国产精品一二一区| 一本一本大道香蕉久在线精品| 久久久久www| 亚洲视频在线观看| 欧美激情一区二区三区四区| 国产亚洲欧洲997久久综合| 亚洲午夜国产一区99re久久| 美女精品一区| 久久er精品视频| 欧美亚男人的天堂| 99国产精品国产精品久久| 麻豆国产精品一区二区三区| 亚洲自拍偷拍福利| 国产精品久久久久毛片软件|