Apache之工作模式

一、Apache 的工作模式簡介

  • Apache作爲現今web服務器,是使用最廣泛、最穩定的開源服務器軟件

  • 源碼包安裝 httpd 時可查看 httpd-mpm.conf 文件,該文件位於 extra/conf 目錄中

  • 目前主要有三種模式:

    • event 模式 :一個進程中包含多個線程
    • prefork 模式:一個進程中包含一個線程
    • worker 模式:一個進程中包含多個線程

二、event 模式

  • event 是Apache 最新的工作模式,它和 worker模式很像,不同的是在於它解決了keep-alive 長連接的時候佔用線程資源被浪費的問題;
  • event 工作模式在遇到某些不兼容的模塊時,會失效,將會退回到worker模式;
  • event 工作模式需要 linux系統,對epoll的支持,才能啓用,需要補充的是HTTPS的連接(SSL)
  • SSL 安全套接字,是加密的安全傳輸方式

2.1、event 工作方式

  • event工作模式中,會有一些專門的線程用來管理這些 keep-alive 類型的線程;
  • 當有真實請求過來的時候,將請求傳遞給服務器的線程,執行完畢後,又允許它釋放;
  • 這樣,一個線程就能處理幾個請求了,實現了異步非阻塞,這增強了在高併發場景下的請求處理。
  • event模式執行進程完畢後,允許釋放,但work模式不允許釋放

2.2、event 參數講解

例如,在 httpd-mpm.conf 配置文件中,以下是event 模塊的定義:

<IfModule mpm-event-module>
  StartServers        3
  MinSpareThreads      75
  MaxSpareThreads      250
  ThreadsPerchild       25
  MaxRequestWorks    400
  MaxConnectionsPerChild    0
  </IfModule>

在這裏插入圖片描述

三、prefork模式

  • prefork 是一個多路處理模塊,實現了一個進程型、預派生的web服務器,適合於沒有線程安全庫、需要避免線程兼容性問題的系統。

  • 在要求每個請求相互獨立的情況下具有很好的特性,若一個請求出現問題不會影響到其他請求

  • 具有很強的自我調節能力,只需要很少的配置指令進行調整就可以適合於企業應用要求

  • 最重要的是將MaxClients 設置爲一個足夠大的數值以處理潛在的請求高峯,同時又不能太大,以避免所需的內存超出物理內存的大小

3.1、prefork 工作方式

  • 一個單獨的控制進程(父進程)負責產生子進程,子進程用於監聽請求並作出應答,因此在內存中會一直存在一些備用的(spare)或是空閒的子進程,用於響應新的請求,可加快響應速度。

  • 父進程通常以root 身份運行,以便綁定80端口,子進程通常以一個低特權的用戶運行,可通過配置項的 User 和 Group 配置。

  • 運行子進程的用戶必須要對網站內容有讀取權限,但是對其他資源必須擁有儘可能少的權限,以保證系統安全。

  • 編譯安裝時沒有指定工作模式,默認會使用 prefork模式,可用 httpd -l 查看。

3.2、prefork 參數講解

在 httpd-mpm.conf 配置文件中,以下是prefork 模塊的定義:

<IfModule mpm-prefork-module>
  StartServers        20
  MinSpareServers    10
  MaxSpareServers     50
  MaxClients       150
  MaxRequestsPerChild     0
  </IfModule>

參數詳解:
在這裏插入圖片描述

四、worker模式

4.1、worker 工作方式

  • 每個進程能夠擁有的線程數量是固定的,服務器會根據負載情況增加或減少進程數量;

  • 一個單獨的控制進程(父進程)負責子進程的建立,每個子進程能夠建立 ThreadsPerChild 數量的服務線程和一個監聽線程,監聽線程監聽接入請求並將其傳遞給服務線程處理和應答。

  • Apache 總是會維持一個備用(spare)或是空閒的服務線程池,客戶端無須等待新線程或新進程的建立即可得到服務。

  • 父進程一般都是以 root 身份啓動,以綁定80 端口;隨後,Apache 以較低權限的用戶建立子進程和線程。

  • User 和 Group 指令用於配置Apache 子進程的運行用戶,子進程要對網頁內容擁有讀權限,但應該儘可能限制權限。

4.2、worker 參數講解

在這裏插入圖片描述

五、目錄屬性

  • 目錄的權限設置使用<Directory 目錄路徑>和這對語句爲主目錄或虛擬目錄設置權限
  • 它們是一對容器語句,必須成對出現,它們之間封裝的是具體的設置目錄權限語句,這些語句僅對被設置目錄及其子目錄起作用。
  • 目錄屬性參數:
    在這裏插入圖片描述
    在這裏插入圖片描述
發佈了72 篇原創文章 · 獲贊 32 · 訪問量 4956
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章