您好,登錄后才能下訂單哦!
問題
在Prima/Plesk/Virtuozzo上,apache都使用了系統(tǒng)自帶的httpd-2.0.5x的rpm包
在redhat linux上,默認(rèn)使用的是prefork模式,而不是worker模式
如何在二者間切換?
解決方案
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)求。
比如,需要更好伸縮性的可以選擇象worker或event這樣線程化的MPM,
而需要更好的穩(wěn)定性和兼容性以適應(yīng)一些舊的軟件可以用prefork 。
在Redhat Linux的主要版本as4上,apache版本為httpd-2.0.5x,
默認(rèn)為prefork模式,主要是考慮到穩(wěn)定性的原因。
要切換到worker模式,則需要登錄到linux上,進(jìn)行如下操作:
進(jìn)入/usr/sbin目錄
cd /usr/sbin
將當(dāng)前的prefork模式啟動(dòng)文件改名
mv httpd httpd.prefork
將worker模式的啟動(dòng)文件改名
mv httpd.worker httpd
修改配置文件vi /etc/httpd/conf/httpd.conf
找到里邊的如下一段,可適當(dāng)修改負(fù)載等參數(shù):
StartServers 5
ThreadLimit 200
ServerLimit 50
MaxClients 2000
MinSpareThreads 25
MaxSpareThreads 200
ThreadsPerChild 100
MaxRequestsPerChild 50
重新啟動(dòng)服務(wù)
/etc/init.d/httpd restart
即可換成worker方式啟動(dòng)apache2
總結(jié):
1. prefork 中沒有線程的概念,是多進(jìn)程模型,一個(gè)進(jìn)程處理一個(gè)連接;穩(wěn)定;響應(yīng)快。其缺點(diǎn)是在連接數(shù)比較大時(shí)就非常消耗內(nèi)存。
2. worker 是多進(jìn)程多線程模型,一個(gè)進(jìn)程有多個(gè)線程,每個(gè)線程處理一個(gè)連接。與prefork相比,worker模式更節(jié)省系統(tǒng)的內(nèi)存資源。不過,需要注意worker模式下的Apache與php等程序模塊的兼容性。
3. event 是worker模式的變種,它把服務(wù)進(jìn)程從連接中分離出來(lái),在開啟KeepAlive場(chǎng)合下相對(duì)worker模式能夠承受的了更高的并發(fā)負(fù)載。event模式不能很好的支持https的訪問(HTTP認(rèn)證相關(guān)的問題)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。