• <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>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

            Nginx0.7.61代碼分析(四)--處理超時連接

            之前在分析ligty的時候提到,它的超時處理模型大致如下:
            注冊一個處理alarm信號的回調函數(shù),然后每秒鐘觸發(fā)一次
            回調函數(shù)每次被觸發(fā)之后,置某個標志位
            在服務器的主循環(huán)中,每次循環(huán)都會檢查這個標志位有沒有被置位,如果有,說明一秒鐘已經(jīng)過去,這時輪詢所有當前處理的連接,刪除超時的連接。

            這個模型,最大的問題在于,它的效率與當前連接數(shù)量有很大關系,數(shù)量大了,輪詢一次的成本很高。

            Nginx里面,處理超時連接的模型比之ligty高效了很多:
            當前所有可能被觸發(fā)的定時器被保存在紅黑樹這種數(shù)據(jù)結構中,通過紅黑樹,你可以很快的得到距離當前最快發(fā)生的定時器事件的時間差。
            將這個時間差作為select/poll/epoll等函數(shù)的參數(shù),也就是,最多等待這么長時間就返回。
            當函數(shù)返回時,得到函數(shù)調用總共花費了多少時間,根據(jù)這個時間取出紅黑樹的根節(jié)點比較查看是否應該觸發(fā)該定時器時間,如果可以則將該定時器從紅黑樹中刪除,然后繼續(xù)查看新的成為樹根的定時器節(jié)點,這個過程一直進行下去直到?jīng)]有定時器滿足被觸發(fā)的條件,也就是還沒有到被觸發(fā)的事件。

            Nginx里面,新接收了一個連接,會保存這個連接上來的時間,并且以這個時間來加入紅黑樹定時器中。

            可以看到,因為引入了紅黑樹這個數(shù)據(jù)結構,所有的定時器都可以按照順序來依次取出,這樣不用輪詢所有事件來查看是否超時了;而以距離當前最快發(fā)生的定時器事件時間差作為輪詢的定時,又可以不用使用alarm信號來觸發(fā)定時,一舉兩得。

            這個處理超時事件的模型,與我之前分析過的libevent的模型,大體相同,只不過,在那里紅黑樹被堆代替了。

            posted on 2009-12-10 23:52 那誰 閱讀(6332) 評論(1)  編輯 收藏 引用 所屬分類: 服務器設計Nginx

            評論

            # re: Nginx0.7.61代碼分析(四)--處理超時連接  回復  更多評論   

            如果設置了timer_resolution指令的話,nginx貌似也是通過定時器來處理的。
            不是對否?
            2009-12-30 23:06 | sty
            久久综合狠狠综合久久综合88 | 一本伊大人香蕉久久网手机| 精品久久久久久亚洲精品 | 久久精品中文字幕一区| 一级a性色生活片久久无| 亚洲AV无码久久寂寞少妇| 久久国产高清字幕中文| 一本大道久久香蕉成人网 | 久久久久无码中| 久久久久高潮毛片免费全部播放 | 无码国内精品久久人妻| 国产人久久人人人人爽| 欧美精品福利视频一区二区三区久久久精品 | 久久香蕉一级毛片| 亚洲综合熟女久久久30p| 精品久久久久久国产免费了| 无码人妻少妇久久中文字幕蜜桃| 久久亚洲精品视频| 久久久久人妻一区二区三区| 久久成人国产精品一区二区| 99国产欧美精品久久久蜜芽| 久久精品国产99国产精品亚洲 | 国内精品久久久久久中文字幕| 无码人妻精品一区二区三区久久| 人人狠狠综合88综合久久| 久久精品国产免费一区| 久久久久久午夜成人影院 | 成人a毛片久久免费播放| 国内精品伊人久久久久av一坑| 蜜桃麻豆WWW久久囤产精品| 久久精品国产亚洲av瑜伽| 精品免费久久久久国产一区| 久久精品成人免费看| www久久久天天com| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久水蜜桃亚洲av无码精品麻豆| 久久99热这里只有精品66| 久久久久亚洲精品日久生情| 99久久国产宗和精品1上映| 久久无码国产专区精品| 色偷偷88888欧美精品久久久|