您好,登錄后才能下訂單哦!
問題
在Prima/Plesk/Virtuozzo上,apache都使用了系統自帶的httpd-2.0.5x的rpm包
在redhat linux上,默認使用的是prefork模式,而不是worker模式
如何在二者間切換?
解決方案
Apache HTTP服務器被設計為一個強大的、靈活的能夠在多種平臺以及不同環境下工作的服務器。
不同的平臺和不同的環境經常產生不同的需求,或是為了達到同樣的最佳效果而采用不同的方法。
Apache憑借它的模塊化設計很好的適應了大量不同的環境。
這一設計使得網站管理員能夠在編譯時和運行時憑借載入不同的模塊來決定服務器的不同附加功能。
Apache2.0將這種模塊化的設計延伸到了web服務器的基礎功能上。
這個版本帶有多路處理模塊(MPM)的選擇以處理網絡端口綁定、
接受請求并指派子進程來處理這些請求。
比如,需要更好伸縮性的可以選擇象worker或event這樣線程化的MPM,
而需要更好的穩定性和兼容性以適應一些舊的軟件可以用prefork 。
在Redhat Linux的主要版本as4上,apache版本為httpd-2.0.5x,
默認為prefork模式,主要是考慮到穩定性的原因。
要切換到worker模式,則需要登錄到linux上,進行如下操作:
進入/usr/sbin目錄
cd /usr/sbin
將當前的prefork模式啟動文件改名
mv httpd httpd.prefork
將worker模式的啟動文件改名
mv httpd.worker httpd
修改配置文件vi /etc/httpd/conf/httpd.conf
找到里邊的如下一段,可適當修改負載等參數:
StartServers 5
ThreadLimit 200
ServerLimit 50
MaxClients 2000
MinSpareThreads 25
MaxSpareThreads 200
ThreadsPerChild 100
MaxRequestsPerChild 50
重新啟動服務
/etc/init.d/httpd restart
即可換成worker方式啟動apache2
總結:
1. prefork 中沒有線程的概念,是多進程模型,一個進程處理一個連接;穩定;響應快。其缺點是在連接數比較大時就非常消耗內存。
2. worker 是多進程多線程模型,一個進程有多個線程,每個線程處理一個連接。與prefork相比,worker模式更節省系統的內存資源。不過,需要注意worker模式下的Apache與php等程序模塊的兼容性。
3. event 是worker模式的變種,它把服務進程從連接中分離出來,在開啟KeepAlive場合下相對worker模式能夠承受的了更高的并發負載。event模式不能很好的支持https的訪問(HTTP認證相關的問題)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。