Ubuntu下配置Apache的Worker模式
其實Apache本身的并發能力是足夠強大的,但是Ubuntu默認安裝的是Prefork模式下的Apache。所以導致很多人后面盲目的去 安裝lighttpd或者nginx一類替代軟件。但是這類軟件有一定的兼容問題,部分情況下可能工作的并不好。那么, 是不是Apache并發就不行了呢?——答案當然是否定的。
在進行配置之前,我們首先要知道什么是Prefork模式,什么是Worker模式,什么是Event模式,以及什么是MPM。
MPM是Apache2引入的一個概念,就是將結構模塊化。把核心任務處理作為一個可插拔的模塊,即MPM,使其能針對不同的環境進行優化。在這個情況下,就誕生出了處理模式的概念。處理模式現在分為Prefork、Worker、Event三種。
Prefork MPM基于非線程模型,和Apache 1.x版本中的處理方式很相似。Prefork MPM在所有情況下都很安全,對運行非線程安全(non-thread-safe)模式的軟件如PHP,它是唯一的安全選擇。對于某些應用程序,包括在 Apache 1.3上非常流行的程序(如簡單靜態頁面、CGI腳本等),Prefork MPM是最好的選擇。另一方面,prefork用單獨的子進程來處理不同的請求,進程之間是彼此獨立的,這也使其成為最穩定的MPM之一。但是由于每一個 請求都會產生一個新的進程,導致系統資源(尤其是內存)消耗的很快,一旦并發量較大的時候,大量的Apache進程會占用巨大的內存空間。
而Worker MPM基于線程模式,具有內存消耗低(對繁忙的服務很重要)、擴展性在某些特定應用情況下比Prefork更好等優點。在這個模式下,采用的進程和線程混 合的形式處理請求。由于使用線程來處理,所以可以處理相對海量的請求,而系統資源的開銷要小于基于進程的Prefork模式。
以上兩種穩定的MPM方式在非常繁忙的服務器應用下都有些不足。盡管HTTP的Keepalive方式能減少TCP連接數量和網絡負載,但是 Keepalive需要和服務進程或者線程綁定,這就導致一個繁忙的服務器會耗光所有的線程。Event MPM是解決這個問題的一種新模型,它把服務進程從連接中分離出來。在服務器處理速度很快,同時具有非常高的點擊率時,可用的線程數量就是關鍵的資源限 制,此時Event MPM方式是最有效的。一個以Worker MPM方式工作的繁忙服務器能夠承受每秒好幾萬次的訪問量(例如在大型新聞服務站點的高峰時),而Event MPM可以用來處理更高負載。值得注意的是,Event MPM不能在安全HTTP(HTTPS)訪問下工作。
一目了然,三種MPM模式各有各的優缺點。但是如果我們經常遇到訪問量一大,服務器資源就吃緊的情況,那么就是Prefork模式瓶頸了。在其 他兩類MPM中,通用的做法還是使用Worker模式來解決問題。Event MPM由于不支持安全連接(HTTPS)所以導致應用有一定的局限性。
下面我們就以Ubuntu下將Apache的模式從Prefork設置為Worker為例,來說明一下操作步驟。前面也提到了,由于Worker模式與 PHP的執行方式不同,所以如果簡單的輸入apt-get install apache2-mpm-worker,會導致PHP無法使用。當然了,如果你的網頁只有靜態頁面,不需要使用PHP,那么使用上面這條指令就會搞定一 切。這里我們著重討論下要使用PHP的情況下,應該如何配置?Apache的Worker模式?。
1. 安裝Apache的fcgid模塊,使用它來啟用PHP。
#apt-get install libapache2-mod-fcgid2. 設置fcgid模塊的配置文件,使其能夠調用PHP。
#vim /etc/apache2/mods-available/fcgid.conf將文件內的原來文本全部刪除掉,然后添加下面的文本:
AddHandler fcgid-script .php .py .pl .fcgi SocketPath /var/lib/apache2/fcgid/sock IPCConnectTimeout 203. 安裝php5-cgi。
#apt-get install php5-cgi4. 設置Apache的配置文件,使其能夠調用fcgid模塊來啟動PHP。
#vim /etc/apache2/apache2.conf在文件最后添加下面的內容:
FCGIWrapper /usr/bin/php5-cgi .php Options ExecCGI SymLinksIfOwnerMatch5. 安裝Apache的Worker MPM模塊。
#apt-get install apache2-mpm-worker需要注意的是,如果之前有安裝了php5-gd和php5-mysql模塊,Ubuntu在配置?Apache的Worker模式?的時候可能會將其卸載,可以重新安裝一次以防萬一:
#apt-get install php5-gd php5-mysql這樣就成功的完成了Apache的Worker MPM模塊配置工作,現在Apache將會以Worker模式運行了。你會發現你的站點負載能力又會大大的提升,內存資源也會充裕很多了。
- 本文來自:Linux學習教程網
轉載于:https://www.cnblogs.com/ah1234/p/4255194.html
總結
以上是生活随笔為你收集整理的Ubuntu下配置Apache的Worker模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Devc++编译系统分配给int多少字节
- 下一篇: 学习笔记之23-typedef