自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux+Apache+Mysql+PHP優(yōu)化技巧

系統(tǒng) Linux
LAMP 平臺由四個組件組成,呈分層結(jié)構(gòu)。每一層都提供了整個軟件棧的一個關(guān)鍵部分:Linux、Apache、MySQL、PHP。

[[194000]]

LAMP這個詞的由來最早始于德國雜志“c't Magazine”,Michael Kunze在1990年最先把這些項目組合在一起創(chuàng)造了LAMP的縮寫字。這些組件雖然并不是開開始就設(shè)計為一起使用的,但是,這些開源軟件都可以很方便的隨時獲得并免費獲得。這就導(dǎo)致了這些組件經(jīng)常在一起使用。在過去的幾年里,這些組件的兼容性不斷完善,在一起的應(yīng)用情形變得非常普便。為了改善不同組件之間的協(xié)作,已經(jīng)創(chuàng)建了某些擴展功能。目前,幾乎在所有的Linux發(fā)布版中都默認(rèn)包含了“LAMP stack”的產(chǎn)品。這些產(chǎn)品組成了一個強大的Web應(yīng)用程序平臺

LAMP 平臺由四個組件組成,呈分層結(jié)構(gòu)。每一層都提供了整個軟件棧的一個關(guān)鍵部分:

  • Linux:Linux 處在最低層,提供操作系統(tǒng)。其他每個組件實際上也在 Linux 上運行。但是,并不一定局限于 Linux,如有必要,其他組件也可以在 Microsoft® Windows®、Mac OS X 或 UNIX® 上運行。
  • Apache:次低層是 Apache,它是一個 Web 服務(wù)器。Apache 提供可讓用戶獲得 Web 頁面的機制。Apache 是一款穩(wěn)定的、支持關(guān)鍵任務(wù)的服務(wù)器,Internet 上超過 65% 的網(wǎng)站都使用它作為 Web 服務(wù)器。PHP 組件實際上是在 Apache 中,動態(tài)頁面可以通過 Apache 和 PHP 創(chuàng)建。
  • MySQL:MySQL 提供 LAMP 系統(tǒng)的數(shù)據(jù)存儲端。有了 MySQL,便可以獲得一個非常強大的、適合運行大型復(fù)雜站點的數(shù)據(jù)庫。在 Web 應(yīng)用程序中,所有數(shù)據(jù)、產(chǎn)品、帳戶和其他類型的信息都存放在這個數(shù)據(jù)庫中,通過 SQL 語言可以很容易地查詢這些信息。
  • PHP:PHP 是一門簡單而有效的編程語言,它像是粘合劑,可以將 LAMP 系統(tǒng)所有其他的組件粘合在一起。您可以使用 PHP 編寫能訪問 MySQL 數(shù)據(jù)庫中的數(shù)據(jù)和 Linux 提供的一些特性的動態(tài)內(nèi)容。

[檢測工具]

為了得到完整的調(diào)試結(jié)果,建議你采用 ApacheBench 或者 httperf之類的軟件。如果你對非 LAMP 架構(gòu)的服務(wù)器測試有興趣的話,建議你采用微軟的免費軟件: Web Application Stress Tool(需要 NT 或者 2000)。(其它服務(wù)器測試工具)

檢測 Apache ,采用 top d 1 顯示所有進(jìn)程的 CPU 和內(nèi)存情況。另外,還采用 apachectl status 命令

[硬件優(yōu)化]

1、升級硬件的一般規(guī)則:對于 PHP 腳本而言,主要的瓶頸是 CPU ,對于靜態(tài)頁面而言,瓶頸是內(nèi)存和網(wǎng)絡(luò)。一臺 400 Mhz 的普通奔騰機器所下載的靜態(tài)頁面就能讓 T3 專線(45Mbps)飽和。

2、采用 hdparm 來優(yōu)化磁盤,一般能提升 IDE 磁盤讀寫性能 200%,但是對 SCSI 硬盤也有效果。(不同類型的硬盤對比)

[策略優(yōu)化]

3、Apache 處理 PHP 腳本的速度要比靜態(tài)頁面慢 2-10 倍,因此盡量采用多的靜態(tài)頁面,少的腳本。

4、PHP 腳本如果不做緩沖,每次調(diào)用都需要編譯,因此,安裝一個 PHP 緩沖產(chǎn)品能提升 25-100% 的性能。

5、如果你采用了 Linux 系統(tǒng),建議升級內(nèi)核到 2.4,因為靜態(tài)頁面由內(nèi)核服務(wù)。

6、另外一項緩沖技術(shù)是把不常修改的 PHP 頁面采用 HTML 緩沖輸出。

7、不要在 Web 服務(wù)器上運行 X-Windows ,關(guān)掉沒有必要運行的進(jìn)程。

8、如果能夠用文本就不要用圖像,盡量減小圖片的尺寸。

9、分散負(fù)載,把數(shù)據(jù)庫服務(wù)器放到另外的機器上去。采用另外低端的機器服務(wù)圖片和 HTML 頁面,如果所有的靜態(tài)頁面在另外一臺服務(wù)器上處理,可以設(shè)置 httpd.conf 中的 KeepAlives 為 off ,來減少斷開連接的時間。

10、以上所有的方法都是針對單機而言的,如果你覺得系統(tǒng)還是不夠快,可以采用集群,負(fù)載均衡,緩沖技術(shù)。采用 Squid 作為緩沖,配置 Squid 的方法。

[編譯優(yōu)化]

11、把基于文件的會話切換到基于共享內(nèi)存的會話。編譯 PHP 時采用 --with-mm 選項,在 php.ini 中設(shè)置 set session.save_handler=mm 。這個簡單的修改能讓會話管理時間縮短一半。

12、采用最新版本的 Apache ,并把 PHP 編譯其中,或者采用 DSO 模式,不要采用 CGI 方式。

13、編譯 PHP 時,建議采用如下的參數(shù):

--enable-inline-optimization --disable-debug

[配置優(yōu)化]

14、修改 httpd.conf :

# 關(guān)閉 DNS lookups,PHP 腳本只拿 IP 地址

HostnameLookups off

15、如果網(wǎng)絡(luò)擁擠,CPU 資源不夠用,采用 PHP 的 HTML 壓縮功能:

output_handler = ob_gzhandler

PHP 4.0.4 的用戶請不要使用,因為存在內(nèi)存泄漏問題。

16、修改 httpd.conf 中的 SendBufferSize 為你最大的頁面文件的大小。加大內(nèi)核的 TCP/IP 寫緩沖大小。

17、采用數(shù)據(jù)庫的持久連接時,不要把 MaxRequestsPerChild 設(shè)置得太大。

[第三方軟件優(yōu)化]

18、如果喜歡從修改 Apache 源碼入手,可以安裝 lingerd。在頁面產(chǎn)生和發(fā)送后,每個 Apache 進(jìn)程都會浪費一段時光在客戶連接上,Lingerd 能接管這項工作,讓 Apache 迅速服務(wù)下一個客戶請求。

19、如果你足夠勇敢的話,還可以采用 Silicon Graphics 的 Accelerated Apache 補丁。這個工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。

安裝一個 PHP 緩沖產(chǎn)品能提升 25-100% 的性能。

[Linux系統(tǒng)優(yōu)化]

1.清理服務(wù)器磁盤碎片:

不論Linux文件系統(tǒng)采用什么文件格式(ext3、JFS、XFS、ReiserFS )、何種類型的硬盤(IDE 、SCSI),隨著時間的推移文件系統(tǒng)都會趨向于碎片化。ext3、JFS等高級文件系統(tǒng)可以減少文件系統(tǒng)的碎片化,但是并沒有消除。在繁忙的數(shù)據(jù)庫服務(wù)器中,隨著時間的過去,文件碎片化將降低硬盤性能,硬盤性能從硬盤讀出或?qū)懭霐?shù)據(jù)時才能注意到。時間長了會發(fā)現(xiàn)每個磁盤上確實積累了非常多的垃圾文件,釋放磁盤空間可以幫助系統(tǒng)更好地工作。Linux最好的整理磁盤碎片的方法是做一個完全的備份,重新格式化分區(qū),然后從備份恢復(fù)文件。但是對于7×24小時工作關(guān)鍵任務(wù)服務(wù)器來說是比較困難的。Kleandisk是一個高效的磁盤清理工具,它能把磁盤上的文件分成不同的"組",比如把所有的"core"文件歸成一組(Group),這樣要刪除所有core文件時只要刪除這個組就行了。core文件是當(dāng)軟件運行出錯時產(chǎn)生的文件,它對于軟件開發(fā)人員比較有用,對于其他用戶(比如電子郵件服務(wù)器)卻沒有任何意義。因此,如果沒有軟件開發(fā)的需要,見到core文件就可以將其刪除。

2、開啟硬盤DMA

現(xiàn)在使用的IDE硬盤基本支持DMA66/100/133(直接內(nèi)存讀取)但是Linux發(fā)行版本安裝后一般沒有打開,可以 /etc/rc.d/rc.local 最後面加上一行: /sbin/hdparm -d1 –x66 -c3 -m16 /dev/hda 這樣以后每次開機,硬盤的 DMA 就會開啟,不必每次手動設(shè)定。添加前后你可以使用命令:hdparm -Tt /dev/hda 來測試對比一下。

3、調(diào)整緩沖區(qū)刷新參數(shù)

Linux內(nèi)核中,包含了一些對于系統(tǒng)運行態(tài)的可設(shè)置參數(shù)。緩沖刷新的參數(shù)可以通過調(diào)整 /proc/sys/vm/bdflush文件來完成,這個文件的格式是這樣的: # cat /proc/sys/vm/bdflush 30 64 64 256 500 3000 60 0 0

每一欄是一個參數(shù),其中最重要的是前面幾個參數(shù)。第一個數(shù)字是在"dirty"緩沖區(qū)達(dá)到多少的時候強制喚醒bdflush進(jìn)程刷新硬盤,第二個數(shù)字是每次讓bdflush進(jìn)程刷新多少個dirty塊。所謂dirty塊是必須寫到磁盤中的緩存塊。接下來的參數(shù)是每次允許bd flush將多少個內(nèi)存塊排入空閑的緩沖塊列表。 以上值為RHEL 4.0中的缺省值??梢允褂脙煞N方法修改:

(1)使用命令

  1. # echo "100 128 128 512 5000 3000 60 0 0">/proc/sys/vm/bdflush 

并將這條命令加到/etc/rc.d/rc.local文件中去。

(2)在/etc/sysctl.conf 文件中加入如下行:

  1. vm.bdflush = 100 128 128 512 5000 3000 60 0 0 

以上的設(shè)置加大了緩沖區(qū)大小,降低了bdflush被啟動的頻度,VFS的緩沖刷新機制是Linux文件系統(tǒng)高效的原因之一。

4、優(yōu)化輸入輸出

I/O程序?qū)inux系統(tǒng)性能也是相當(dāng)重要的,網(wǎng)絡(luò)硬件I/O對服務(wù)器尤其重要?,F(xiàn)在大多數(shù)Linux服務(wù)器使用10/100 Mb以太網(wǎng)。如果有較重的網(wǎng)絡(luò)負(fù)載,則可以考慮千兆以太網(wǎng)卡。如果沒有能力購買千兆網(wǎng)卡的話:可以使用多塊網(wǎng)卡虛擬成為一塊網(wǎng)卡,具有相同的IP地址。這項技術(shù),在Linux中,這種技術(shù)稱為Bonding。Bonding在Linux2.4以上內(nèi)核中已經(jīng)包含了,只需要在編譯的時候把網(wǎng)絡(luò)設(shè)備選項中的 Bonding driver support選中見圖1。當(dāng)然利用Bonding技術(shù)配置雙網(wǎng)卡綁定的前提條件是兩塊網(wǎng)卡芯片組型號相同,并且都具備獨立的BIOS芯片。

然后,重新編譯核心,重新起動計算機,執(zhí)行如下命令:

  1. #ismod bonding 
  2.  
  3. #ifconfig eth0 down 
  4.  
  5. #ifconfig eth1 down 
  6.  
  7. #ifconfig bond0 ipaddress 
  8.  
  9. #ifenslave bond0 eth0 
  10.  
  11. #ifenslave bond0 eth1 

 

現(xiàn)在兩塊網(wǎng)卡已經(jīng)象一塊一樣工作了。這樣可以提高集群節(jié)點間的數(shù)據(jù)傳輸.bonding對于服務(wù)器來是個比較好的選擇,在沒有千兆網(wǎng)卡時,用兩塊100兆網(wǎng)卡作bonding,可大大提高服務(wù)器到交換機之間的帶寬.但是需要在交換機上設(shè)置連接bonding網(wǎng)卡的兩個子口映射為同一個虛擬接口。編輯 /etc/modules.conf文件,加入如下內(nèi)容,以使系統(tǒng)在啟動時加載Bonding模塊。 alias bond0 bonding options bond0 mode=0

“mode”的值表示工作模式,共有0、1、2和3四種模式,這里設(shè)定為0。Bonding工作在負(fù)載均衡(Load Balancing (round-robin))方式下,即兩塊網(wǎng)卡同時工作,這時理論上Bonding能提供兩倍的帶寬。Bonding運行在網(wǎng)卡的混雜(Promisc)模式下,而且它將兩塊網(wǎng)卡的MAC地址修改為一樣的?;祀s模式就是網(wǎng)卡不再只接收目的硬件地址是自身MAC地址的數(shù)據(jù)幀,而是可以接收網(wǎng)絡(luò)上所有的幀。

5、減少虛擬終端機的數(shù)量。

Linux安裝后系統(tǒng)默認(rèn)是6個虛擬終端機,也就是 CTRL+ALT F1~F6 那六個,作為服務(wù)器使用可以關(guān)掉其中四個,只留下 CTRL+ALT F1~F2,大約省下 4 Mbytes 的內(nèi)存,但是這樣一來,X-Window 會從原來的 CTRL+ALT F7 變成 CTRL+ALT F3 。 修改 /etc/inittab 中,將 mingetty 3 ~6 全部加上 # 字號 。

6. 關(guān)閉一些不用的服務(wù)

Linux服務(wù)器在啟動時需要啟動很多系統(tǒng)服務(wù),它們向本地和網(wǎng)絡(luò)用戶提供了Linux的系統(tǒng)功能接口,直接面向應(yīng)用程序和用戶。提供這些服務(wù)的程序是由運行在后臺的守護(hù)進(jìn)程(daemons)來執(zhí)行的。守護(hù)進(jìn)程是生存期長的一種進(jìn)程。它們獨立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。他們常常在系統(tǒng)引導(dǎo)裝入時啟動,在系統(tǒng)關(guān)閉時終止。linux系統(tǒng)有很多守護(hù)進(jìn)程,大多數(shù)服務(wù)器都是用守護(hù)進(jìn)程實現(xiàn)的。如Web服務(wù)http 等。同時,守護(hù)進(jìn)程完成許多系統(tǒng)任務(wù),比如,作業(yè)規(guī)劃進(jìn)程crond、打印進(jìn)程lqd等。有些書籍和資料也把守護(hù)進(jìn)程稱作:“服務(wù)”。關(guān)閉服務(wù)方法請查看筆者的文章:深入理解Linux守護(hù)進(jìn)程。 

責(zé)任編輯:龐桂玉 來源: PHP技術(shù)大全
相關(guān)推薦

2011-03-23 15:55:41

LAMP

2009-03-10 18:36:56

LinuxLAMP環(huán)境搭建

2009-12-31 16:53:20

Ubuntu LAMP

2009-12-03 18:19:53

Linux

2009-12-09 17:33:22

PHP性能優(yōu)化

2010-01-11 09:12:15

Fedora LAMP

2010-10-18 14:01:49

2011-03-08 11:11:38

LinuxLAMP安裝

2010-05-21 17:38:22

Mysql+php5+

2011-03-08 11:11:38

LinuxLAMP安裝

2011-03-11 15:53:00

LAMP優(yōu)化

2011-03-11 15:52:59

LAMP優(yōu)化

2011-03-08 10:56:56

LinuxLAMP安裝

2009-11-27 13:24:20

PHP代碼性能優(yōu)化

2011-03-11 15:52:57

LAMP優(yōu)化

2011-03-11 15:53:02

LAMP優(yōu)化

2009-02-18 11:24:24

優(yōu)化加速PHP

2011-03-08 11:22:29

LinuxLAMP

2009-11-26 09:38:18

Suse Linux

2012-09-04 13:56:48

LinuxMySQL優(yōu)化
點贊
收藏

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