|NO.Z.00050|——————————|LinuxNetwork|——|Linux&Apache.V01|
阿新 • • 發佈:2022-03-25
[LinuxNetworkEnd:Linux&Apache.V01] [Applications.LinuxNetworkEnd] [|web伺服器Apache|Apache別名|Apache使用者認證|Apache虛擬主機|Apache域名跳轉|apache+openssl] [實現https(重點)|Apache日誌切割|Apache不記錄指定檔案型別的日誌|Apache配置靜態快取|]
一、講在Apache之前
### --- 講在Apache之前 ### --- HTML:#超文字標記語言, ~~~ 使用html語言編寫的文字叫超文字, ~~~ “超文字”就是指頁面內可以包含#圖片/連線/甚至音樂/程式等非文字元素。
### --- HTTP協議:
~~~ 超文字傳輸協議;HTTP使用同一資源識別符號(URL)來建立連線和傳輸資料,
~~~ 是一個基於TCP/IP通訊協議來傳遞資料的協議,屬於應用層協議。
### --- URL:統一資源定位符:
~~~ 統一資源定位符是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示。
~~~ 是網際網路上標準資源的地址。
~~~ http://www.atyanqi.com:80/image/a.jpg
二、Apache詳解### --- 知識拓展: ### --- URI: ~~~ 統一資源標誌符,URI與URL都定位資源位置的, ~~~ 就是表示這個資源的位置資訊,就像經緯度一樣可以表示你在世界的那個角落。 ~~~ URI是一種寬泛的含義更廣的定義。而URI的一個子集,就是URI是URL的一部分。
三、工作模式### --- 概述 ~~~ Apache是世界使用排名第一的Web伺服器軟體。 ~~~ 它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用, ~~~ 是最流行的web伺服器端軟體之一,因此,在一個Apache web站點擴容時, ~~~ 通常是增加伺服器或擴充群集節點而不是增加處理器, ~~~ 到目前為止Apache仍然是世界上用的最多的web伺服器,市場佔有率60%左右。 ~~~ Apache有多種產品,可以支援SSL技術,支援多個虛擬機器,Apache是以程序為基礎的結構, ~~~ 程序要比執行緒消耗更多的系統開支,不太適合於多個處理器環境, ~~~ 因此,在一個Apache web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器, ~~~ 到目前為止Apache仍然是世界上用的最多的web伺服器,市場佔有率達60%左右。
### --- Apache程序啟動的流程
~~~ 系統啟動起來之後會啟動一個init的程序,
~~~ 系統再去啟動其他程序的時候是由init這個程序啟動的,
~~~ 比如說使用service或者apachectl都是使用init程序去啟動的,
~~~ Apache也分為兩種程序,一種是Apache的守護程序root來執行,
~~~ 而其它的都是Apache的子程序,預設是Deamion使用者,若是更改了,可以是你指定的
~~~ 啟動的時候使用init的程序去呼叫Apache的守護程序,
~~~ Apache的守護程序在呼叫Apache的工作程序 ,Apache的工作程序再去處理一個一個的使用者請求。
~~~ 守護程序還載入了一個一個的模組
~~~ 工作程序會對使用者的請求進行一定的處理來判斷是什麼靜態還是動態,
~~~ 若是靜態的是HTML的直接返回給使用者,使用者的瀏覽器自己可以解決的;
~~~ 若是動態的頁面的時候:動態頁面需要解析器來處理的,
~~~ Apache會通過modules模組處理,交給PHP,PHP才會處理,
~~~ PHP把要處理的頁面處理之後,交給Apache,Apache在交給使用者。
~~~ 區分動態靜態頁面:#動態需要連線資料庫,不連線資料庫就是靜態頁面
~~~ Apache一共有3中穩定的MPM模式(MPM:多程序處理模組),
~~~ 他們分別是prefork/worker/event/prefork工作模式
~~~ Apache在啟動之初,就預先fork一些子程序,然後等待請求進來,之所以這樣做,
~~~ 是為了減少頻繁建立和銷燬程序的開銷,每個子程序只有一個執行緒,在一個時間點內,
~~~ 只能處理一個請求。
~~~ #優點:成熟穩定,相容所有新老模組,同時,不需要擔心執行緒安全的問題
~~~ #缺點:一個程序相對佔用更多的系統資源,消耗更多的記憶體,而且,它並不擅長處理高併發請求。
### --- worker工作模式:
~~~ 使用了多程序和多執行緒的混合模式,它也預先fork了幾個子程序(數量比較少),
~~~ 然後每個子程序建立一些執行緒,同時包括一個監聽執行緒,每個請求過來,
~~~ 會被分配到1個執行緒來服務,執行緒比起程序會更輕量,
~~~ 因為執行緒通常會共享父程序的記憶體空間,因此,記憶體的佔用會減少一些,
~~~ 在高併發的場景下,因此比起prefork有更多的可用執行緒,表現會更優秀一些。
~~~ #優點:佔據更少單位的記憶體,高併發下表現更優秀
~~~ #缺點:必須考慮執行緒安全的問題。
### --- event工作模式:
~~~ 它和worker模式很像,最大的區別在於,它解決了keep-alive場景下,
~~~ 長期被佔用的資源浪費問題,event MRM中,
~~~ 會有一個專門的執行緒來管理這些keep-alive型別的執行緒,當有真實請求過來的時候,
~~~ 將請求傳遞給服務執行緒,執行完畢後,又允許釋放,這樣增強了高併發場景下的請求處理能力。
~~~ HTTP採用Keepalived方式減少TCP連線數量,但是由於需要與伺服器執行緒或程序進行繫結,
~~~ 導致一個頻繁忙的伺服器會消耗完所有的執行緒,event MPM是解決這個問題的一種新模型,
~~~ 它把服務程序從連線中分離處理,在伺服器處理速度很快,同時具有非常高的點選率時,
~~~ 可用的執行緒就是關鍵的資源限制。此時Event MPM方式是最有效的,但不能再HTTPS訪問下工作。
### --- Keep-alive
~~~ 在http早期,每個http請求都要求開啟tcp socket連線,
~~~ 並且使用一次之後就斷開這個TCP連線
~~~ 當httpd守護程序傳送完一個響應後,理應馬上主動關閉相應的tcp連線,設定keepalive_timeout後,
~~~ httpd守護程序會想說:“再等等把,看看瀏覽器還有沒有請求過來”,
~~~ 這一等,便是keepalive_timeout時間。如果守護程序在這個等待的時間裡,
~~~ 一直沒有收到瀏覽器發過來http請求,則關閉這個http連線。
~~~ 使用keep-alive可以改善這種狀態;
~~~ 即在一次tcp連線中可以持續傳送多份資料而不會斷開連線,通過使用keep-alive機制,
~~~ 可以減少tcp連線建立次數,也意味著可以減少time_wait轉態連線,
~~~ 以此提高效能和提高httpd伺服器的吞吐率(更少的tcp連線意味著更少的系統核心呼叫)
~~~ 但是,長時間的tcp連線容易導致系統資源無效佔用,配置不當的keep-alive,
~~~ 有時比重複利用連線的損失還更大,所以,正確的設定keep-alive timeout時間非常重要。
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)