偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

LAMP下Apache的調(diào)優(yōu)

運維 系統(tǒng)運維
LAMP的意思是Linux操作系統(tǒng),Apache網(wǎng)絡(luò)服務(wù)器,MySQL數(shù)據(jù)庫,Perl、PHP或者Python編程語言,所有組成產(chǎn)品均是開源軟件,是國際上成熟的架構(gòu)框架,很多流行的商業(yè)應(yīng)用都是采取這個架構(gòu)。本文講述的是LAMP下Apache的調(diào)優(yōu)

  調(diào)優(yōu)Apache

  Apache 是一種高度可配置的軟件。它具有大量特性,但每一種都代價高昂。從某種程度上來說,調(diào)優(yōu) Apache來說就是以恰當(dāng)?shù)姆绞椒峙滟Y源,還涉及到將配置簡化為僅包含必要內(nèi)容。

  配置 MPM

  Apache是模塊化的,因為可以輕松添加和移除特性。在 Apache 的核心,多處理模塊(Multi-Processing Module,MPM)提供了這種模塊化功能性 —— 管理網(wǎng)絡(luò)連接、調(diào)度請求。MPM使您能夠使用線程,甚至能夠?qū)?Apache遷移到另外一個操作系統(tǒng)。

  每次只能有一個 MPM 是活動的,必須使用 --with-mpm=(worker|prefork|event) 靜態(tài)編譯。

  每個請求使用一個進(jìn)程的傳統(tǒng)模型稱為 prefork。 較新的線程化模型稱為 worker,它使用多個進(jìn)程,每個進(jìn)程又有多個線程,這樣就能以較低的開銷獲得更好的性能。***的 event MPM 是一種實驗性的模型,為不同的任務(wù)使用單獨的線程池。要確定當(dāng)前使用的是哪種 MPM,可執(zhí)行 httpd -l。

  如:

  1.   [root@localhost ~]# httpd -l  
  2.  
  3.   Compiled in modules:  
  4.  
  5.   core.c  
  6.  
  7.   prefork.c  
  8.  
  9.   http_core.c  
  10.  
  11.   mod_so.c  
  12.  

  選擇使用何種 MPM 取決于許多因素。在 event MPM 脫離實驗狀態(tài)之前,不應(yīng)考慮這種模型,而是在使用線程和不使用線程之間作出選擇。表面上看來,如果所有底層模塊(包括 PHP 使用的所有庫)都是線程安全的,線程要優(yōu)于分叉(forking)。而 Prefork 是較為安全的選擇;如果選擇了worker, 則應(yīng)該謹(jǐn)慎測試。性能收益還取決于您的發(fā)布版所附帶的庫及硬件。

  無論選擇了哪種 MPM,都必須恰當(dāng)?shù)嘏渲盟?。一般而言,配?MPM包括告知 Apache怎樣去控制有多少 worker正在運行,它們是線程還是進(jìn)程。prefork MPM的重要配置選項如清單 1 所示。

  清單 1. prefork MPM 的配置

  1.   StartServers 50  
  2.  
  3.   MinSpareServers 15  
  4.  
  5.   MaxSpareServers 30  
  6.  
  7.   MaxClients 225  
  8.  
  9.   MaxRequestsPerChild 4000  
  10.  

  prefork 模型會為每個請求創(chuàng)建一個新進(jìn)程。多余的進(jìn)程保持空閑,以處理傳入的請求,這縮短了啟動延遲。只要 Web 服務(wù)器出現(xiàn),預(yù)先完成的配置就會立即啟動 50 個進(jìn)程,并盡力保持 10 到 20 個空閑服務(wù)器運行。進(jìn)程數(shù)的硬性限制由 MaxClients 指定。盡管一個進(jìn)程能夠處理許多相繼的請求,Apache 還是會取消連接數(shù)超過 4,000 以后的進(jìn)程,這降低了內(nèi)存泄漏的風(fēng)險。

  配置線程化 MPM 與之類似,不同之處只是必須確定使用多少線程和進(jìn)程。Apache 文檔解釋了所有必要的參數(shù)和計算。

  要經(jīng)過幾次嘗試和出錯之后才能選好要使用的值。最重要的值是 MaxClients。目標(biāo)在于允許足夠多的 workder 進(jìn)程或線程運行,同時又不會導(dǎo)致服務(wù)器進(jìn)行過度的交換。如果傳入的請求超出處理能力,那么至少滿足此值的那些請求會得到服務(wù),其他請求被阻塞。

  如果 MaxClients 過高,那么所有客戶機(jī)都將體驗到糟糕的服務(wù),因為 Web 服務(wù)器會試圖換出一個進(jìn)程,以使另一個進(jìn)程能夠運行。而設(shè)得過低意味著可能會不必要地拒絕服務(wù)。查看高負(fù)載下運行的進(jìn)程數(shù)量和所有 Apache 進(jìn)程所導(dǎo)致的內(nèi)存占用情況對設(shè)置這個值很有幫助。如果 MaxClients 的值超過 256,必須將 ServerLimit 也設(shè)為同樣的數(shù)值,請仔細(xì)閱讀 MPM 的文檔,了解相關(guān)信息。

  根據(jù)服務(wù)器的角色調(diào)優(yōu)要啟動和保持空閑的服務(wù)器數(shù)量。如果服務(wù)器僅運行 Apache,那么可以使用適中的值,如 清單 1 所示,因為這樣就能充分利用機(jī)器。如果系統(tǒng)中還有其他數(shù)據(jù)庫或服務(wù)器,那么就應(yīng)該限制運行中的空閑服務(wù)器的數(shù)量。

  有效地使用選項和重寫

  Apache 處理的每個請求都要履行一套復(fù)雜的規(guī)則,這些規(guī)則指明了 Web 服務(wù)器必須遵循的約束或特殊指令。對文件夾的訪問可能按 IP 地址約束為某個特定文件夾,也可配置用戶名和密碼。這些選項還包含處理特定文件,例如,如果提供了一個目錄列表,該如何處理的文件,或輸出結(jié)果是否應(yīng)壓縮。

  這些配置以 httpd.conf 中容器的形式出現(xiàn),例如 ,以便指定所用配置引用的是磁盤上的一個位置;再如 ,表示引用是 URL 中的路徑。清單 2 展示了一個實際的 Directory 容器。

  清單 2. 為根目錄應(yīng)用的一個 Directory 容器  

  1.   AllowOverride None  
  2.  
  3.   Options FollowSymLinks  
  4.  

  在清單 2 中,位于一對 Directory 和 /Directory 標(biāo)記之間的配置應(yīng)用于給定目錄和該目錄下的一切內(nèi)容 —— 在本例中,這個給定目錄是根目錄。此處,AllowOverride 標(biāo)記指出,用戶不允許重寫任何選項(稍后將進(jìn)一步介紹)。FollowSymLinks 選項被啟用,它允許 Apache 查看之前的符號連接來為請求提供服務(wù),即便文件位于包含 Web 文件的目錄之外。這就意味著,如果 Web 目錄中的一個文件是 /etc/passwd 的符號連接,Web 服務(wù)器將在請求時順利為該文件提供服務(wù)。如果使用了 -FollowSymLinks,該特性就會被禁用,同樣的請求將致使為客戶機(jī)返回錯誤。

  ***這個場景正是導(dǎo)致兩方面關(guān)注的原因所在。***個方面與性能有關(guān)。如果禁用了 FollowSymLinks,Apache 就必須檢查使用該文件名的所有組件(目錄和文件本身),以確保它們不是符號連接。這會帶來額外的開銷(磁盤操作)。另外一個稱為 FollowSymLinksIfOwnerMatch 的選項會在文件所有者與連接所有者相同時使用符號連接。為獲得***性能,請使用 清單 2 中的選項。

  至此,有安全意識的讀者應(yīng)該有了警惕的感覺。安全性永遠(yuǎn)是功能性與風(fēng)險之間的權(quán)衡。在我們的例子中,功能性是速度,而風(fēng)險是允許對系統(tǒng)上的文件進(jìn)行未經(jīng)授權(quán)的訪問。緩解風(fēng)險的措施之一是 LAMP 應(yīng)用服務(wù)器通常專注于一種具體功能,用戶無法創(chuàng)建危險的符號連接。如果有必要啟用符號連接,那么可以將其約束在文件系統(tǒng)的特定區(qū)域,如清單 3 所示。

  清單 3. 將 FollowSymLinks 約束為一個用戶的目錄  

  1.   Options FollowSymLinks    
  2.  
  3.   Options -FollowSymLinks    
  4.  

  在清單 3 中,一個用戶的主目錄中的任何 public_html 目錄及其所有子目錄都移除了 FollowSymLinks 選項。

  如您所見,通過主服務(wù)器配置,可為每個目錄單獨配置選項。用戶可以自行重寫這種服務(wù)器配置(如果管理員通過 AllowOverrides 語句允許了這種操作),只需將一個 .htaccess 文件放入目錄即可。該文件包含額外的服務(wù)器指令,每次請求包含 .htaccess 文件的目錄時將加載并應(yīng)用這些指令。盡管之前探討過系統(tǒng)沒有用戶的問題,但許多 LAMP 應(yīng)用程序都利用這種功能性來控制訪問、實現(xiàn) URL 重寫,因此有必要理解其工作原理。

  即便 AllowOverrides 語句能阻止用戶去做您不希望他們做的事,Apache 也必須檢查 .htaccess 文件,看看是否有要完成的工作。父目錄可以指定由來自子目錄的請求處理的指令,這也就表示,Apache 必須搜索所請求文件的目錄樹的所有組件。可想而知,這會使每次請求都導(dǎo)致大量磁盤操作。

  最簡單的解決方案是不允許重寫,這能消除 Apache 檢查 .htaccess 的需求。之后的任何特殊配置都將直接放在 httpd.conf 中。清單 4 顯示為對一個用戶的項目目錄進(jìn)行密碼檢查向 httpd.conf 增加的代碼,而不是將其放入一個 .htaccess 文件并依賴于 AllowOverrides。

  清單 4. 將 .htaccess 配置移入 httpd.conf  

  1.   AuthUserFile /home/user/.htpasswd  
  2.  
  3.   AuthName "uber secret project"  
  4.  
  5.   AuthType basic  
  6.  
  7.   Require valid-user  
  8.  

  

  如果配置轉(zhuǎn)移到 httpd.conf 中,且 AllowOverrides 被禁用,磁盤的使用就能減少。一個用戶的項目可能不會吸引許多人來點擊,但設(shè)想一下,將這項技術(shù)應(yīng)用于一個忙碌的站點時會有多么強大。

  有時不可能徹底消除 .htaccess 文件的使用。例如,在清單 5 中,一個選項被約束到文件系統(tǒng)的特定部分,重寫也可以是有作用域的。

  清單 5. 限定 .htaccess 檢查的作用域  

  1.   AllowOverrides None    
  2.  
  3.   AllowOverrides AuthConfig  
  4.  

  實現(xiàn)清單 5 之后,Apache 會在父目錄中查找 .htaccess 文件,但會在 public_html 目錄處停止,因為文件系統(tǒng)的其余部分禁用了此功能。例如,如果請求的是一個映射到 /home/user/public_html/project/notes.html 的文件,那么僅有 public_html 和 project 目錄被搜索。

  關(guān)于每目錄單獨配置的***一個提示就是:要按順序依次進(jìn)行。任何介紹 Apache 調(diào)優(yōu)的的文章都會告訴您,應(yīng)通過 HostnameLookups off 指令禁用 DNS 查找,因為試圖反向解析連接到您的服務(wù)器的所有 IP 地址無疑是浪費資源。然而,基于主機(jī)名的任何約束都會迫使 Web 服務(wù)器對客戶機(jī)的 IP 地址執(zhí)行反向查找,對其結(jié)果進(jìn)行正向查找,以驗證該名稱的真實性。因此,避免使用基于客戶主機(jī)名的訪問控制,在必須使用時限定其作用域,這些都是明智的做法。

  持久連接

  一個客戶機(jī)連接到 Web 服務(wù)器時,允許客戶機(jī)通過同一個 TCP 連接發(fā)出多個請求,這減少了與多個連接相關(guān)的延遲。在一個 Web 頁面引用了多幅圖片時,這就很有用:客戶機(jī)可以通過一個連接先請求頁面,再請求所有圖片。其缺點在于服務(wù)器上的 worker 進(jìn)程必須等待客戶機(jī)要關(guān)閉的會話,之后才能轉(zhuǎn)到下一個請求。

  Apache 使您能夠配置如何處理持久連接(稱為 keepalives)。httpd.conf 全局級的 KeepAlive 5 允許服務(wù)器在連接強制關(guān)閉之前處理一個連接上的 5 個請求。將此值設(shè)置為 0 將禁用持久連接。同樣位于全局級上的 KeepAliveTimeout 確定在會話關(guān)閉之前,Apache 將等待另外一個連接多久。

  持久連接的處理并非 “一刀切” 式的配置。對于某些 Web 站點,禁用 keepalives 更合適(KeepAlive 0);而對于其他一些站點,啟用它會帶來巨大的收益。惟一的解決之道就是嘗試使用這兩種配置,自己觀察哪種更合適。但若啟用了 keepalives,使用較小的超時時間較為明智,例如 2,即 KeepAliveTimeout 2。這能確保希望發(fā)出另外一個請求的客戶機(jī)有充足的時間,還能確保 worker 進(jìn)程不會一直空閑,等待可能永遠(yuǎn)不會出現(xiàn)的下一個請求。

  壓縮

  Web 服務(wù)器能夠在將輸出發(fā)回給客戶機(jī)之前壓縮它。這將使通過 Internet 發(fā)送的頁面更小,代價是 Web 服務(wù)器上的 CPU 周期。對于那些負(fù)擔(dān)得起 CPU 開銷的服務(wù)器來說,這是提高頁面下載速度的好辦法 —— 頁面壓縮后大小變?yōu)樵瓉淼娜种贿@種事情并不罕見。

  圖片通常已經(jīng)是壓縮過的,因此壓縮應(yīng)僅限于文本輸出。Apache 通過 mod_deflate 提供壓縮。盡管 mod_deflate 可輕松啟用,但它涉及到太多的復(fù)雜性,很多手冊都解釋了這些復(fù)雜的內(nèi)容。

【編輯推薦】

Ubuntu下LAMP的配置

Ubuntu10.04下LAMP環(huán)境的搭建

LAMP配置MYsql問題-1045

責(zé)任編輯:zhaolei 來源: CSDN
相關(guān)推薦

2011-03-14 13:38:40

LAMPApache調(diào)優(yōu)

2011-03-18 11:21:48

2011-03-10 14:40:52

2011-03-18 11:00:48

LAMPLAMP 架構(gòu)

2011-03-21 09:35:38

LAMP調(diào)優(yōu)網(wǎng)絡(luò)文件

2011-03-02 10:01:15

2011-03-21 09:17:35

LAMP調(diào)優(yōu)磁盤

2011-03-18 11:13:07

LAMP度量性能

2011-03-21 17:07:37

2011-03-21 13:59:44

Apachemysqlphp

2011-03-21 14:13:44

LAMPApacheSSL

2011-03-10 14:40:50

2011-09-09 15:49:19

AIX操作系統(tǒng)JAVA

2011-03-10 14:40:54

LAMPMysql

2012-01-10 14:35:08

JavaJVM

2017-07-21 08:55:13

TomcatJVM容器

2017-07-04 13:02:02

Linux系統(tǒng)性能調(diào)優(yōu)工具

2021-03-04 08:39:21

SparkRDD調(diào)優(yōu)

2011-03-11 14:02:53

Apache配置

2011-05-20 14:23:01

Oracle調(diào)優(yōu)
點贊
收藏

51CTO技術(shù)棧公眾號