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

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

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

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

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

評論

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

學習了,客戶端的超時鏈接,我一般無視啊,我原來基本理解就是玩家網絡不好,沒想到休眠也會這樣  回復  更多評論   

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

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

<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

公告

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

常用鏈接

留言簿(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>
            欧美四级电影网站| 最新成人在线| 裸体一区二区三区| 久久亚洲国产精品日日av夜夜| 亚洲欧美日韩一区二区三区在线观看| 麻豆精品在线观看| 一本久久a久久精品亚洲| 欧美一区二区在线看| 免费一级欧美片在线播放| 一本色道久久| 免费亚洲电影| 国产精品久久久久久妇女6080| 国产一区二区三区在线观看视频 | 一区二区三区视频在线观看| 午夜欧美大尺度福利影院在线看 | 91久久精品国产91性色| 老司机精品视频一区二区三区| 国产精品第13页| 日韩午夜激情电影| 欧美波霸影院| 免费亚洲一区| 亚洲第一页自拍| 久久国产精品第一页| 久久高清福利视频| 午夜精品视频在线观看一区二区| 亚洲人成亚洲人成在线观看图片 | 久久精品久久综合| 亚洲一区免费观看| 亚洲国产精品久久久久秋霞蜜臀| 最近中文字幕日韩精品 | 亚洲一区二区三区高清| 欧美日韩国产精品一区二区亚洲| 欧美视频观看一区| 夜夜嗨av色综合久久久综合网| 欧美电影在线播放| 欧美日韩成人综合天天影院| 亚洲伦理在线免费看| 欧美高清日韩| 亚洲欧美99| 伊人蜜桃色噜噜激情综合| 久久久高清一区二区三区| 午夜精彩视频在线观看不卡 | 性欧美1819sex性高清| 亚洲看片免费| 欧美日韩精品一区二区三区| 亚洲国产毛片完整版| 亚洲成色777777女色窝| 裸体女人亚洲精品一区| 亚洲经典在线看| 亚洲国产高清视频| 欧美裸体一区二区三区| 亚洲欧洲精品一区二区精品久久久| 女女同性精品视频| 欧美人与性动交α欧美精品济南到| 一区二区三区国产精品| 欧美在线播放一区二区| 亚洲国产精品99久久久久久久久| 亚洲第一区中文99精品| 亚洲性视频网站| 亚洲理论在线| 亚洲日本免费电影| 国产精品麻豆va在线播放| 久久久综合激的五月天| 美女黄毛**国产精品啪啪| 一本一本久久a久久精品牛牛影视| 一本色道久久综合亚洲精品不卡| 黄色一区二区三区| 一区二区三区导航| 性色av一区二区三区红粉影视| 在线精品福利| 亚洲视频在线观看免费| 国内精品视频在线观看| 亚洲区免费影片| 国产亚洲欧美日韩日本| 亚洲精品乱码久久久久久黑人| 国产欧美日本| 亚洲欧洲日产国码二区| 国产综合香蕉五月婷在线| 在线一区二区三区四区五区| 精品成人一区二区三区| 亚洲激情成人在线| 久久九九精品| 亚洲欧美在线一区二区| 一区二区日韩免费看| 久久精品一区四区| 亚洲午夜免费福利视频| 亚洲人成亚洲人成在线观看图片| 国模私拍一区二区三区| 亚洲精品欧美专区| 黄色成人av| 欧美亚洲综合另类| 亚洲中字在线| 欧美国内亚洲| 久热re这里精品视频在线6| 国产一区二区三区无遮挡| 亚洲国产精品久久人人爱蜜臀 | 国产亚洲一级高清| 亚洲天堂成人在线观看| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧美一区二区三区极速播放| 亚洲欧美在线另类| 亚洲午夜一区二区三区| 麻豆国产精品777777在线| 久久精品国产久精国产思思| 国产伦精品一区二区三区四区免费| 亚洲国产裸拍裸体视频在线观看乱了 | 99精品国产在热久久下载| 亚洲毛片在线看| 中日韩视频在线观看| 久久尤物视频| 久久精品国亚洲| 欧美成人性网| 9久草视频在线视频精品| 日韩视频二区| 久久久亚洲精品一区二区三区 | 欧美福利网址| 亚洲国产一区二区精品专区| 可以免费看不卡的av网站| 国产精品一区二区三区久久久| 亚洲欧美国产日韩天堂区| 翔田千里一区二区| 国产精品v亚洲精品v日韩精品| 亚洲精品久久7777| 中文在线不卡视频| 国产精品区一区| 蜜桃精品久久久久久久免费影院| 欧美一区二区三区视频免费| 久久久久久久久岛国免费| 狠色狠色综合久久| 欧美美女操人视频| 性xx色xx综合久久久xx| 亚洲国产电影| 午夜在线成人av| 亚洲国产视频a| 国产精品蜜臀在线观看| 久久久精品999| 亚洲婷婷国产精品电影人久久| 欧美肥婆在线| 亚洲欧美高清| 欧美成人免费在线| 亚洲欧美日韩一区二区三区在线| 在线精品视频免费观看 | 亚洲欧美激情四射在线日| 伊人久久综合| 国产伦精品一区二区三区视频黑人| 久久全国免费视频| 亚洲一区日韩| 亚洲精品视频在线播放| 巨胸喷奶水www久久久免费动漫| 日韩午夜免费| 在线免费观看欧美| 国产视频久久久久| 国产精品成人在线观看| 欧美精品一区二区在线观看 | 99视频有精品| 一区二区三区在线不卡| 国产精品免费一区二区三区观看| 牛牛影视久久网| 久久精品国产免费观看| 亚洲欧美精品在线观看| 亚洲精品在线三区| 亚洲第一黄色网| 香蕉精品999视频一区二区| 亚洲乱码一区二区| 亚洲激情成人网| 亚洲国产导航| 精品成人在线视频| 国产真实久久| 国模一区二区三区| 韩国亚洲精品| 黄色成人精品网站| 韩国一区二区三区在线观看| 国产午夜精品久久久久久免费视 | 欧美另类人妖| 欧美了一区在线观看| 欧美高清视频www夜色资源网| 久久天天综合| 久久午夜影视| 老司机午夜精品视频在线观看| 久久精品视频一| 久久久久91| 美女日韩在线中文字幕| 欧美va亚洲va国产综合| 欧美不卡视频一区| 欧美精品激情blacked18| 欧美—级a级欧美特级ar全黄| 欧美激情国产日韩精品一区18| 欧美极品aⅴ影院| 欧美日韩国产精品一区二区亚洲 | 日韩视频精品在线| 日韩视频一区二区在线观看 | 久久野战av| 欧美国产一区二区三区激情无套| 你懂的视频欧美| 欧美日韩免费高清| 国产精品视频观看| 久久亚洲国产成人| 国内外成人免费激情在线视频| 狠狠色香婷婷久久亚洲精品| 久久久久久久高潮|