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