切换apache的prefork和worker模式
Apache HTTP服務(wù)器被設(shè)計(jì)為一個(gè)強(qiáng)大的、靈活的能夠在多種平臺以及不同環(huán)境下工作的服務(wù)器。
不同的平臺和不同的環(huán)境經(jīng)常產(chǎn)生不同的需求,或是為了達(dá)到同樣的最佳效果而采用不同的方法。
Apache憑借它的模塊化設(shè)計(jì)很好的適應(yīng)了大量不同的環(huán)境。
這一設(shè)計(jì)使得網(wǎng)站管理員能夠在編譯時(shí)和運(yùn)行時(shí)憑借載入不同的模塊來決定服務(wù)器的不同附加功能。
Apache2.0將這種模塊化的設(shè)計(jì)延伸到了web服務(wù)器的基礎(chǔ)功能上。
這個(gè)版本帶有多路處理模塊(MPM)的選擇以處理網(wǎng)絡(luò)端口綁定、
接受請求并指派子進(jìn)程來處理這些請求。
比如,需要更好伸縮性的可以選擇象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ù):
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
重新啟動(dòng)服務(wù)
/etc/init.d/httpd restart
即可換成worker方式啟動(dòng)apache2
注意這里可能會(huì)遇到錯(cuò)誤:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. Pre-configuration failed!
解決方法是將/etc/httpd/conf.d/php.conf文件中的LoadModule開頭的那行代碼注釋掉。
--------------------------
注意:處于穩(wěn)定性和安全性考慮,不建議更換apache2的運(yùn)行方式,使用系統(tǒng)默認(rèn)prefork即可
另外很多php模塊不能工作在worker模式下,例如redhat linux自帶的php也不能支持線程安全
所以最好不要切換工作模式。
=========================================
# /etc/init.d/httpd stop
[root@web ~]# which apachectl
/usr/sbin/apachectl
[root@web ~]# which httpd
/usr/sbin/httpd
[root@web ~]# cd /usr/sbin/
[root@web ~]# mv httpd httpd.prefork
# mv httpd.worker httpd
# httpd -k start
總結(jié)
以上是生活随笔為你收集整理的切换apache的prefork和worker模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虐心个性签名简短
- 下一篇: Apache的prefork模式和wor