HTTPD三種工做模型

HTTPD三種工做模型

MPM是apache的多道處理模塊,用於定義apache對客戶端請求的處理方式.在linux中apache經常使用的三種MPM模型分別是prefork、worker和event.html

prefork:

預先生成進程,一個請求用一個進程響應.Apache2.2版本默認使用prefork模型.優勢:穩定可靠、執行效率高,任何一個進程的崩潰不會影響其它請求.缺點:在大併發的時候對服務器資源消耗嚴重.linux

worker:

基於線程的處理方式,一個進程生成多個線程,一個請求用一個線程響應.因爲使用線程訪問,多個線程共享同一個進程的資源,若是一個進程訪問過某一個文件而且打開了,另外一個線程訪問就不用再次打開.優勢:在高併發的狀況下,對服務器的資源消耗相對prefork模型要小不少.缺點:執行效率、穩定性都不如prefork模型.linux不是個原生支持線程的操做系統,經測試發現worker模型在linux上面的綜合表現不如prefork模型.web

event:

基於事件驅動的處理模型,一個進程處理多個請求.前面兩種模型在開啓長鏈接的狀況下都是保持一個整的進程或線程來等待客戶端的請求,在高併發的狀況下這種機制很快會耗光服務器的可用進程.event模型簡單的來講就是把線程進行分工,採用專用的進程來監聽套接字保持鏈接,由於監聽套接字和保持TCP鏈接所須要的資源極小一個進程就能夠處理大量的這種請求.event模型在apache2.2上面只是個測試模型,在2.4上面已經默認使用event模型了.須要注意的event模型是不能再https的訪問下工做的.shell

查看當前的工做模型:

在2.4版本中關於MPM的配置文件保存在/etc/httpd/conf.modules.d目錄下一個叫00-mpm.conf的配置文件apache

# pwd
/etc/httpd/conf.modules.d
# ls
00-base.conf  00-lua.conf  00-proxy.conf    01-cgi.conf
00-dav.conf   00-mpm.conf  00-systemd.conf

查看這個配置文件,能夠看出當前的工做模型是prefork,若是要更改的話直接去掉LoadModule前的#,但只能啓用三種工做模型中的一種。服務器

# cat 00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

#能夠看出當前的工做模型是prefork
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
#LoadModule mpm_event_module modules/mod_mpm_event.so
相關文章
相關標籤/搜索