?
This document uses PHP Chinese website manual Release
本文檔描述了什么是多路處理模塊以及它如何為Apache所使用。
Apache HTTP服務(wù)器被設(shè)計(jì)為一個(gè)強(qiáng)大的、靈活的能夠在多種平臺(tái)以及不同環(huán)境下工作的服務(wù)器。不同的平臺(tái)和不同的環(huán)境經(jīng)常產(chǎn)生不同的需求,或是為了達(dá)到同樣的最佳效果而采用不同的方法。Apache憑借它的模塊化設(shè)計(jì)很好的適應(yīng)了大量不同的環(huán)境。這一設(shè)計(jì)使得網(wǎng)站管理員能夠在編譯時(shí)和運(yùn)行時(shí)憑借載入不同的模塊來(lái)決定服務(wù)器的不同附加功能。
Apache2.0將這種模塊化的設(shè)計(jì)延伸到了web服務(wù)器的基礎(chǔ)功能上。這個(gè)版本帶有多路處理模塊(MPM)的選擇以處理網(wǎng)絡(luò)端口綁定、接受請(qǐng)求并指派子進(jìn)程來(lái)處理這些請(qǐng)求。
將模塊化設(shè)計(jì)延伸到這一層次主要有以下兩大好處:
mpm_winnt
中使用本地網(wǎng)絡(luò)特性代替Apache1.3中使用的POSIX模擬層后,Windows版本的Apache現(xiàn)在具有更好的性能。這個(gè)優(yōu)勢(shì)借助特定的MPM同樣延伸到了其他各種操作系統(tǒng)。worker
或event
這樣線程化的MPM,而需要更好的穩(wěn)定性和兼容性以適應(yīng)一些舊的軟件的站點(diǎn)可以用prefork
。從用戶(hù)角度來(lái)看,MPM更像其他的Apache模塊。主要的不同在于:不論何時(shí),必須有且僅有一個(gè)MPM被載入到服務(wù)器中?,F(xiàn)有的MPM列表可以在模塊索引中找到。
MPM必須在編譯配置時(shí)進(jìn)行選擇,并靜態(tài)編譯到服務(wù)器中。如果編譯器能夠確定線程功能被啟用,它將會(huì)負(fù)責(zé)優(yōu)化大量功能。因?yàn)橐恍㎝PM在Unix上使用了線程,而另外一些沒(méi)有使用,所以如果在編譯配置時(shí)選擇MPM并靜態(tài)編譯進(jìn)Apache,Apache將會(huì)有更好的表現(xiàn)。
你可以在使用configure
腳本時(shí)用 --with-mpm=NAME
選項(xiàng)指定MPM,NAME就是你想使用的MPM的名稱(chēng)。
一旦服務(wù)器編譯完成,就可以用 ./httpd -l
命令來(lái)查看使用了哪個(gè)MPM。這個(gè)命令將列出所有已經(jīng)被編譯到服務(wù)器中的模塊,包括MPM。
下表列出了不同操作系統(tǒng)上默認(rèn)的MPM。如果你在編譯時(shí)沒(méi)有進(jìn)行選擇,這將是默認(rèn)選擇的MPM。
BeOS | beos |
Netware | mpm_netware |
OS/2 | mpmt_os2 |
Unix | prefork |
Windows | mpm_winnt |