首頁 >運維 >Apache >apache的工作模式介紹

apache的工作模式介紹

王林
王林轉載
2020-06-28 17:40:383732瀏覽

apache的工作模式介紹

Apache的工作模式

(推薦教學:apache從入門到精通

prefork的工作原理

一個單獨的控制進程(父進程)負責產生子進程,這些子進程用於監聽請求並作出應答。

Apache總是試圖保持一些備用的 (spare)或是空閒的子進程用來迎接即將到來的請求。這樣客戶端就無需在得到服務前等候子程序的產生。在Unix系統中,父進程通常以root身份運行以便邦定80端口,而 Apache產生的子進程通常以一個低特權的用戶運行。

User和Group指令用於配置子程序的低特權使用者。執行子進程的使用者必須要對他所服務的內容有讀取的權限,但是對服務內容以外的其他資源必須擁有盡可能少的權限。

worker的工作原理

每個行程能夠擁有的執行緒數量是固定的。伺服器會根據負載情況增加或減少進程數量。

一個單獨的控制進程(父進程)負責子進程的建立。每個子程序能夠建立ThreadsPerChild數量的服務線程和一個監聽線程,該監聽線程監聽存取請求並將其傳遞給服務線程處理和回應。 Apache總是試圖維持一個備用(spare)或是空閒的服務執行緒池。

這樣,客戶端無須等待新執行緒或新行程的建立即可處理。在Unix中,為了能夠綁定80端口,父進程一般都是以root身份啟動,隨後,Apache以較低權限的用戶建立子進程和線程。 User和Group指令用來設定Apache子程序的權限。雖然子進程必須對其提供的內容擁有讀取權限,但應該盡可能給予他較少的特權。

另外,除非使用了suexec ,否則,這些指令所配置的權限將會被CGI腳本所繼承。

Event MPM

這是Apache最新的工作模式,它和worker模式很像,不同的是在於它解決了keep-alive長連線的時候佔用線程資源被浪費的問題,在event工作模式中,會有一些專門的線程用來管理這些keep-alive類型的線程,當有真實請求過來的時候,將請求傳遞給伺服器的線程,執行完畢後,又允許它釋放。

這增強了在高並發場景下的請求處理。在unix系統中的apache2.4版本所使用的就是這個模式。

以上是apache的工作模式介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除