本篇是對nginx學習最後一篇,若日後工作中對nginx有了更深入了解,會再次寫相關部落格。
一、關於nginx幾個典型問題
1.1、為什麼nginx是高效能http?是如何做到高效能?
1.優異框架,採用全非同步方式
2.優秀資料結構,例如記憶體池,字串只用指標指向,從不重新建立內容
3.用少量代價換取高昂的回報,例如:
1)解決驚群問題,採用程序間同步鎖操作。如果nginx不是為了解決跨平台問題,可以不用解決驚群問題,因為linux核心已經幫忙解決了。
2)採用指標最後一位一定是0,來儲存時間有效性instance
4.能不使用系統呼叫就不使用,例如定時器事件中,避免多次呼叫gettimeofday系統呼叫
1.2、nginx是如何解決驚群問題?
採用程序間同步鎖(accept_mutex),多個程序搶占鎖,某乙個時刻只有乙個程序獲取到鎖。然而比較新的linux核心,已經解決了驚群問題。nginx再實現一次,只是為了跨平台。
1.3、master程序和worker程序通訊方式
socketpair -- master與worker之間通訊,目前只有master向worker傳送訊息
訊號 -- 命令列與master之間,例如重啟,公升級
共享記憶體 -- worker之間,例如:解決驚群問題互斥鎖,資料統計模組
二、關於nginx學習方法
其實這個問題不太好說,每個人的學習方法不一樣。這裡只能把我學習的方法羅列一下
搭建ngxin服務 我們必須能夠執行nginx服務,先從使用角度中了解它
閱讀部落格 部落格是乙個非常好的東西,能夠幫助我們了解基本概念以及解決常見問題
閱讀《深入理解nginx模組開發與架構解析》和原始碼,該書與最新**有一些差異,書本只能做為指導方向。
開發第三方元件或者基於nginx開發自己的服務
編寫部落格,將自己學習到的東西總結成文,加深印象,以便日後翻閱
三、總結
由於我目前工作中沒有用到nginx,僅僅是興趣愛好督促我學習它,若日後工作中涉及到nginx,如有深入了解會再開新篇。
菜鳥學習nginx之接收HTTP Header
處理http header param rev 讀事件 這部分 是處理定時器超時事件,與解析http請求行是相同的,不在多說。接收 http header 這部分 說明 1 判斷記憶體是否足夠,若不足則申請最大記憶體 預設8k 由於http報文是不定長報文,所以無法一次性申請足夠記憶體。2 呼叫ng...
nginx學習總結
1.nginx的配置 user nobody 2.自定義編譯install 本人是用的mac來安裝nginx,採用source來自己編譯安裝,configure,make,make install nginx 需要依賴pcre,openssl兩個模組,需要自己安裝。我的mac電腦已使用brew來安裝...
Nginx學習總結
nginx常用屬性 1 down屬性 用於標識宕機伺服器,標識後此伺服器不提供服務.2 backup屬性 用於標識備用伺服器.標識後該伺服器平時不工作,當那些主伺服器宕機後或者響應服務過多忙不過來時自動啟動.3 ip hash 實際工作使用sso單點登入實現使用者伺服器間資料共享 將使用者初次訪問時...